powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сводный отчет
6 сообщений из 6, страница 1 из 1
Сводный отчет
    #39115955
MCoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, а можно такое сделать с помощью одного запроса?

Есть две таблицы:

users
id username1 Vasja2 Petja3 Misha.....
plugged
id deviceid date user_id4036 49880 2015-11-29 14037 50459 2015-11-29 2... ... ... ...
Нужно получить в итоге сводную таблицу (результат выборки) для какого-то отдельного года
username Jan Feb Mar Apr May June July Aug Sept Oct Nov DecVasja 000003005000Petja 000000080700Misha 000400009000
В ячейках для каждого месяца сумма уникальных deviceid для каждого пользователя.
(в таблице plugged пары deviceid и date уникальные. То есть, раз в день может быть такая запись.)

Подскажите пожалуйста, можно ли это выполнить одним запросом или придется делать выборку для каждого месяца:
Код: sql
1.
SELECT u.id, u.username, COUNT(DISTINCT(p.deviceid)) FROM users u, plugged p WHERE (u.id = p.user_id) and (YEAR(p.date) = 2015) and (MONTH(p.date) = 11) GROUP BY u.id ORDER BY u.username


и потом как-то объединять?
...
Рейтинг: 0 / 0
Сводный отчет
    #39115966
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
select u.username
 ,sum(case when month(p.date)=1 then 1 else 0 end) as jan
 ,...
 ,sum(case when month(p.date)=12 then 1 else 0 end) as dec
from users u
join plugged p on u.id=p.user_id
group by 1
...
Рейтинг: 0 / 0
Сводный отчет
    #39116316
MCoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Направление вроде бы понятно. Но надо посчитать сумму только для уникальных deviceid. То есть, может получиться, что в таблице будут записи:
iddeviceiddateuser_id4036498802015-11-2814037498802015-11-292
В ячейке за ноябрь должна быть единица, а не двойка.

И еще вопрос: как можно изменить таблицу devices для повышения производительности выборки, если учесть что таких записей может быть не одна сотня тысяч?
...
Рейтинг: 0 / 0
Сводный отчет
    #39116422
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MCoder,

Делай кросс-репорт на клиенте.
...
Рейтинг: 0 / 0
Сводный отчет
    #39116462
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MCoder,

......Но надо посчитать сумму только для уникальных deviceid. То есть, может получиться, что в таблице будут записи:......
группируйте, как надо конкретно для задачи (deviceid+user_id, допустим)
...
Рейтинг: 0 / 0
Сводный отчет
    #39116646
MCoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь. Буду разбираться как сделать лучше.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сводный отчет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]