我有一个名为历史的表来记录用户的活动,它由user_id、branch_id和duration组成。
该表如下所示
+++++++++++++++++++++++++++++++++++
id | user_id | branch_id | totHours
+++++++++++++++++++++++++++++++++++
|1 | 100 | 1 | 1 |
|2 | 199 | 1 | 1 |
|3 | 121 | 1 | 1 |
|4 | 140 | 1 | 1 |
|5 | 103 | 2 | 3 |
|6 | 107 | 2 | 1 |
|7 | 299 | 1 | 2 |
|8 | 209 | 2 | 2 |
|9 | 119 | 1 | 5 |
我想要产生这样的输出:
+++++++++++++++++++++++++++
Hours | Branch A | Branch B
+++++++++++++++++++++++++++
|1 | 4 | 1 |
|2 | 1 | 1 |
|3 | 0 | 1 |
|4 | 0 | 0 |
|5 | 1 | 0 |
我尝试使用这个查询来创建它,但是当我仅在totHours列上使用group by时,它返回错误,因为我需要在group by中包括branch_id。
下面是我的问题:
select totHours as Hours,
coalesce(case when branch_id = 1 then count(totHours) else 0 end) as 'Branch A',
coalesce(case when branch_id = 2 then count(totHours) else 0 end) as 'Branch B'
from histories
group by totHours, branch_id;
如果totHours不在表中(例如,在此表4中),它将为两个分支列显示0。
这是我的db fiddle
更新: MySQL版本5.7.22
谢谢
转载请注明出处:http://www.qxdxgs.com/article/20230526/2297401.html