MySQL,数月计算离散元素

时间:2018-07-26 14:01:05

标签: mysql group-by distinct

我有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

有可能吗?如何解决查询?

1 个答案:

答案 0 :(得分: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