1

在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-May : 3, 2013-April : 2

我可以在所有表​​中做不同的日子:SELECT COUNT( DISTINCT dateofreport ) FROM table1 或不同的月份,但我不知道如何按月份分组。

SELECT DISTINCT 
DATE_FORMAT(`dateofreport`,'%Y-%M') as months 
FROM table1
4

3 回答 3

4
SELECT EXTRACT(YEAR_MONTH FROM dateofreport) AS ym,
    COUNT(DISTINCT dateofreport) AS count
FROM table1
GROUP BY ym

我使用 EXTRACT() 的唯一原因是它是 ANSI 标准 SQL,IIRC。这两种类型的函数都可能导致临时表。

于 2013-10-03T00:36:10.150 回答
0
SELECT DATE_FORMAT(dateofreport, '%Y-%M') AS months,
    COUNT(DISTINCT dateofreport) AS count
FROM table1
GROUP BY months
于 2013-10-03T00:37:22.317 回答
0
SELECT 
    EXTRACT(YEAR_MONTH FROM dateofreport) AS distinctmy,
    COUNT(DISTINCT DAYOFYEAR(dateofreport)) AS uniquedays 
FROM
    table1 
GROUP BY distinctmy 

输出

在此处输入图像描述

于 2013-10-03T00:48:13.590 回答