【问题标题】:mysql count distinct days in a monthmysql计算一个月中不同的天数
【发布时间】:2013-10-09 13:10:16
【问题描述】:

在 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 月 31 日。
  • @DevlshOne,不是根据 MySQL! :-) 我们可以设置严格模式以使其成为错误。

标签: mysql sql distinct


【解决方案1】:
SELECT EXTRACT(YEAR_MONTH FROM dateofreport) AS ym,
    COUNT(DISTINCT dateofreport) AS count
FROM table1
GROUP BY ym

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

【讨论】:

    【解决方案2】:
    SELECT 
        EXTRACT(YEAR_MONTH FROM dateofreport) AS distinctmy,
        COUNT(DISTINCT DAYOFYEAR(dateofreport)) AS uniquedays 
    FROM
        table1 
    GROUP BY distinctmy 
    

    输出

    【讨论】:

      【解决方案3】:
      SELECT DATE_FORMAT(dateofreport, '%Y-%M') AS months,
          COUNT(DISTINCT dateofreport) AS count
      FROM table1
      GROUP BY months
      

      【讨论】:

      • 再试一次,我多了一个")"
      猜你喜欢
      • 1970-01-01
      • 2021-01-03
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2012-03-12
      • 2015-12-11
      • 2013-10-06
      相关资源
      最近更新 更多