首页 > 解决方案 > MySQL,数月计算不同的元素

问题描述

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

可能吗?如何修复查询?

标签: mysqlgroup-bydistinct

解决方案


我在这里使用 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

推荐阅读