【问题标题】:Get monthly counts on multiple dates获取多个日期的每月计数
【发布时间】:2021-03-07 21:43:30
【问题描述】:

我有一张像这样的表

id date registered date cancelled
1 2021-01-01 2021-03-02
2 2021-01-05 2021-01-21
3 2021-02-04 2021-02-25
4 2021-02-16 2021-03-26

如何在 mysql 中生成一个查询,该查询将为我提供每月取消和注册的计数。 我可以只为其中一个日期做,但不知道如何结合两个日期。 例如,对于单个日期,我会这样做。

SELECT date_format(`users`.`dateregistered`,_utf8'%Y-%m') AS `DateREegistered`, count(0) AS `Registration Count` 
FROM `users` 
GROUP BY date_format(`users`.`dateregistered`,_utf8'%Y-%m') 

但我想要这样的东西

Date Registered Count Cancelled Count
2021-01 2 1
2021-02 2 1
2021-03 0 2

如果您有任何想法,请告诉我。

【问题讨论】:

    标签: mysql group-by


    【解决方案1】:

    您可以将出现在date registereddate registered 中的不同月份加入表格并使用条件聚合:

    SELECT t.Date,
           SUM(t.Date = date_format(dateregistered, '%Y-%m')) `Registered Count`, 
           SUM(t.Date = date_format(datecancelled, '%Y-%m')) `Cancelled Count`
    FROM (
      SELECT date_format(dateregistered, '%Y-%m') Date FROM users
      UNION
      SELECT date_format(datecancelled, '%Y-%m') FROM users
    ) t INNER JOIN users u
    ON t.Date IN (date_format(dateregistered, '%Y-%m'), date_format(datecancelled, '%Y-%m'))
    GROUP BY t.Date
    

    请参阅demo
    结果:

    Date Registered Count Cancelled Count
    2021-01 2 1
    2021-02 2 1
    2021-03 0 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多