sql - sql server 聚合函数(sum)
问题描述
假设我有一张这样的桌子
| 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 请求来实现这一点,但我认为这不是一个好习惯。我只想要一个请求。对不起英语不好:)
解决方案
在函数中尝试以下 withCASE
语句。SUM()
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 - 以多种不同方式聚合同一列
- python - 如果匹配列合并两个 csv 文件,然后连接额外的列
- r - 我想根据样本 ID 中具有特定字母的观察结果在我的数据集中创建一个新变量
- php - 配置和添加客户端以使用 wordpress 作为 OpenId 提供程序
- c# - 在类库中定义 ref 类类型时出错
- reactjs - 如何解决 s3 key not found 错误
- ms-access - SubTotal Query based on condition of other column
- raku - Raku 中的 int32 失败
- c++ - 在对象中存储和检索不同的数据类型
- bash - BASH 脚本回显文本和命令