MySQL, подсчитывать элементы по месяцам

0

У меня есть SELECT для подсчета элементов в разных месяцах. Но если несколько элементов имеют одно и то же имя и находятся в разные месяцы, тогда DISTINCT работает в каждом месяце по отдельности

SELECT 
    YEAR( 'date' ) AS "year",
    MONTH( 'date' ) AS "month", 
    count( DISTINCT name ) AS "howmany" 
FROM 
    'XYZ' 
GROUP BY
    name,
    year,
    month
ORDER BY 
    'date' DESC

Данные:

_________________________
|01-01-2018  |  name1    |
|01-02-2018  |  name1    |

Возвращает:

2018  |  01  |   1
2018  |  02  |   1

и я хочу:

2018  |  02  |   2

Является ли это возможным? Как исправить запрос?

Теги:
group-by
distinct

1 ответ

1

Я нахожусь здесь в Oracle, у меня нет MySQL, поэтому вам придется адаптировать запрос, но я надеюсь, что вы поняли:

select XYZ.d, XYZ.name, a.howmany
from XYZ
join (select name, count(name) as howmany from XYZ group by name ) a
on XYZ.name = a.name

Ещё вопросы

Сообщество Overcoder
Наверх
Меню