sql server 聚合函数(sum)
Posted
技术标签:
【中文标题】sql server 聚合函数(sum)【英文标题】:sql server aggregate function(sum) 【发布时间】:2020-08-05 01:39:04 【问题描述】:假设我有一张这样的桌子
| Person_ID | DATE | STATUS | HOURS |
----------------------------------------------------
| 001 | April 3 | OK | 3.000 |
| 001 | April 4 | BAD | 3.000 |
| 001 | April 3 | BAD | 4.000 |
| 002 | April 3 | OK | 2.000 |
| 002 | April 5 | BAD | 3.000 |
我想实现这样的目标..
| Person_ID | TOTAL(OK) | TOTAL(BAD) | OVERALL(OK+BAD)|
------------------------------------------------------------
| 001 | 3.000 | 7.000 | 10.000 |
| 002 | 2.000 | 3.000 | 5.000 |
我以前做过类似的事情,但只针对个人Person_ID
。
在这种情况下,我尝试了grouping
和使用sum
,但它实际上不是目标结果,因为我无法将相同的Person_ID
分组为与上面的结果相同。
我实际上可以通过多个 api 请求来实现这一点,但我认为这不是一个好习惯。我只想要一个请求。
抱歉英语不好:)
【问题讨论】:
【参考方案1】:在SUM()
函数中使用CASE
语句尝试以下操作。
select
Person_Id,
sum(case when status = 'OK' then hours end) as `TOTAL(OK)`,
sum(case when status = 'BAD' then hours end) as `TOTAL(BAD)`.
sum(case when status = 'OK' OR status = 'BAD' then hours end) as `TOTAL(OK + BAD)`
from yourTable
group by
Person_Id
【讨论】:
以上是关于sql server 聚合函数(sum)的主要内容,如果未能解决你的问题,请参考以下文章