【问题标题】:PHP/SQL - How to count saturdays in each month?PHP/SQL - 如何计算每个月的星期六?
【发布时间】:2021-12-10 20:58:49
【问题描述】:

我有两个 MySQL 表,分别称为“accounts”和“events”。

帐户

ID name
1 Pete
2 Josh
3 Harry

活动

ID date account_id
1 2021-10-09 1
2 2021-09-25 1
3 2021-10-23 2
4 2021-11-06 1
5 2021-10-13 1
6 2021-11-17 2
7 2021-11-06 3
8 2021-12-04 3

events 表中的 account_id 链接到 accounts 表中的 id。

我的问题是:对于帐户表中的每个唯一用户,我可以使用哪个查询来计算每个月的星期六(日期 YYYY-mm-dd 格式)?所以我得到了下一个结果:

Name September October November December
Josh 0 1 0 0
Pete 1 1 1 0
Harry 0 0 1 1

我尝试了很多查询(即(内部)JOIN、DISTINCT 和 GROUP BY 关键字),但我没有得到确切的结果。你能帮帮我吗?

非常感谢!

【问题讨论】:

    标签: php mysql sql join count


    【解决方案1】:

    基本上你可以使用DAYOFWEEK函数和GROUP BY MONTH

    SELECT 
        account_id,
        MONTH(date), 
        COUNT(*)
    FROM Events 
    WHERE DAYOFWEEK(date) = 7
    GROUP BY account_id, MONTH(date);
    

    SQL Fiddle here

    当您可以在收到的表上使用 PIVOT 时:

    WITH res AS (
      SELECT 
          account_id,
          MONTH(date) mnth, 
          COUNT(*) cnt
      FROM Events 
      WHERE DAYOFWEEK(date) = 7
      GROUP BY account_id, MONTH(date)
    ) SELECT 
        account_id,
        name,
        SUM(mnth=1) Januar,
        -- 
        SUM(mnth=9) September,
        SUM(mnth=10) October,
        SUM(mnth=11) November,
        SUM(mnth=12) December
    FROM res
    JOIN Accounts ON Accounts.id = account_id
    GROUP BY account_id, name;
    

    SQL Pivot Fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-20
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2021-07-26
      • 2017-09-14
      相关资源
      最近更新 更多