【问题标题】:can i can use two group by in sql query我可以在 sql 查询中使用两个 group by
【发布时间】:2021-12-24 04:28:58
【问题描述】:

我有这两张表:

新冠病毒

    | CovidId | StaffId | CovidStartDate | CovidFinishDate | 
      -------   -------   --------------   ---------------
        1           1       21.01.2021         15.01.2021
        2           1       26.04.2021         16.04.2021
        3           2       21.02.2021         14.01.2021
        4           3       22.03.2021         17.03.2021
        5           3       15.04.2021         30.04.2021
  

工作时间

    | WorkId | StaffId | WorkHours| 
     -------   -------   ---------
        1          1          8
        2          2          9
        3          3          8

我想按工作时间显示他们感染了多少次 预期结果

    | WorkHour | CovidCount| 
     -------      -------   
        8           4          
        9           1          
             

我编写了这些 SQL 语句,但无法将它们组合在一起:

SELECT StaffId, COUNT(*) AS covidCount 
FROM Covids 
GROUP BY StaffId

SELECT WorkHours 
FROM WorkingHours 
GROUP BY WorkHours

【问题讨论】:

  • Edit 问题并提供minimal reproducible example,即涉及的表或其他对象的CREATE 语句(粘贴文本,不要使用图像,不要链接到外部站点),INSERT 用于示例数据 (dito) 的语句以及带有表格文本格式的示例数据的期望结果。
  • 请将预期结果添加到问题中。
  • 我添加了@TheImpaler

标签: sql


【解决方案1】:

当然,两个单独的查询不会“合并”。您需要加入表,然后进行聚合。

SELECT w.workhours AS workhour,
       count(*) AS covidcount
       FROM workinghours AS w
            LEFT JOIN covids AS c
                      ON c.staffid = w.staffid
       GROUP BY w.workhours;

【讨论】:

  • 而不是左连接,内连接?
  • @azoss:这将忽略工作时间而没有...不管其他是什么,即计数0
  • 你能看看这是我的新问题吗?请stackoverflow.com/questions/70479655/…
猜你喜欢
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多