在mysql table1
我有列dateofreport
,每天记录很少,例如
dateofreport
2013-05-31
2013-05-31
2013-05-30
2013-05-30
2013-05-30
2013-05-29
2013-04-31
2013-04-31
2013-04-31
2013-04-02
我想知道一个月有多少个不同的日子,
结果应该是:2013年5月:2013年4月3日:2
我可以在所有表中执行不同的日子:SELECT COUNT( DISTINCT dateofreport ) FROM table1
或不同的月份,但我不知道如何按月分组。
SELECT DISTINCT
DATE_FORMAT(`dateofreport`,'%Y-%M') as months
FROM table1
答案 0 :(得分:4)
SELECT EXTRACT(YEAR_MONTH FROM dateofreport) AS ym,
COUNT(DISTINCT dateofreport) AS count
FROM table1
GROUP BY ym
我使用EXTRACT()的唯一原因是它是ANSI标准SQL,IIRC。这两种类型的函数都可能导致临时表。
答案 1 :(得分:0)
SELECT DATE_FORMAT(dateofreport, '%Y-%M') AS months,
COUNT(DISTINCT dateofreport) AS count
FROM table1
GROUP BY months
答案 2 :(得分:0)
SELECT
EXTRACT(YEAR_MONTH FROM dateofreport) AS distinctmy,
COUNT(DISTINCT DAYOFYEAR(dateofreport)) AS uniquedays
FROM
table1
GROUP BY distinctmy
输出的