группировать по месяцам, а затем группировать результаты по идентификатору пользователя

Мне нужно посчитать зарплату работодателя, которая зависит от количества строк, добавленных за месяц (с уникальным picture_id, так что если один и тот же идентификатор изображения появляется дважды, он считается только один раз) — так как я понимаю, мне нужно сгруппировать по обоим picture_id и по месяцам.

Это прекрасно работает, если я делаю это отдельно, т.е.

group by MONTH(TimeAdded)

или же

GROUP BY picture_id

Вот код

$data_qqq = mysql_query("SELECT MONTHNAME(TimeAdded), COUNT(MONTH(TimeAdded)) FROM Picture_Tag WHERE UserID = $user_id GROUP BY MONTH(TimeAdded)");

но это подсчитывает количество записей, добавляемых каждый месяц, даже если есть 20 строк с одинаковыми picture_id,

Теперь, если я попробую

$data_qqq = mysql_query("SELECT MONTHNAME(TimeAdded), COUNT(MONTH(TimeAdded)) FROM Picture_Tag WHERE UserID = $user_id GROUP BY MONTH(TimeAdded),**picture_id**");

Я получаю очень странные испорченные результаты …

Любая идея, как посчитать количество строк, добавляемых каждый месяц с уникальным picture_id?

0

Решение

Без образцов может быть сложно визуализировать данные, но если вы хотите посчитать количество уникальных picture_id каждый месяц, тогда используйте COUNT(DISTINCT picture_id), Но также обратите внимание, что при группировке по «месяцу» вам, скорее всего, также нужно группировать по годам, иначе результат может быть сильно искажен. (В качестве альтернативы используйте предложение where только для выбора интересующего вас года).

Попробуй это:

SELECT
YEAR(TimeAdded)
, MONTH(TimeAdded)
, COUNT(DISTINCT picture_id)
FROM Picture_Tag
WHERE UserID = $USER_ID
GROUP BY
YEAR(TimeAdded)
, MONTH(TimeAdded)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]