我有一张看起来像这样的桌子
Person# | Person Name | Gender | Persons Net Worth
-----------------------------------------------------------
1 Donald J M 20
2 George W M 20
3 Mark B T 20
4 Hil C F 20
5 Hil C F 20
6 Bill C M 20
7 Eric Z M 20
8 Caitl J T 20
Run Code Online (Sandbox Code Playgroud)
我想收集每个性别组的小计。我需要基本上
合并一个 sum(NETWORTH) where gender = 'M' group by gender sort by gender
和一个
sum(NETWORTH) where gender = 'F' group by gender sort by gender
和一个
sum(NETWORTH) where gender = 'T' group by gender sort by gender
所以我基本上希望结果是这样的:
Person# | Person Name | Gender | Persons Net Worth
-----------------------------------------------------------
1 Donald J M 20
2 George W M 20
6 Bill C M 20
7 Eric Z M 20
Total: 80
4 Hil C F 20
5 Hil C F 20
Total: 40
3 Mark B T 20
8 Caitl J T 20
Total: 40
Run Code Online (Sandbox Code Playgroud)
我尝试使用WITH ROLLUP但最终失败了。我知道如何操作背后的代码来实现这一点,但如果可能的话,我宁愿在一个 SQL 查询中完成所有操作。
提前致谢
我会使用grouping sets(见这里):
select Person#, Name, Gender, sum(networth) as networth
from t
group by grouping sets ( (#Person, Name, Gender), (Gender));
Run Code Online (Sandbox Code Playgroud)
尽管这似乎进行了额外的聚合,但语法对于各种小计来说是灵活的。例如,如果您还想要总体总数:
group by grouping sets ( (#Person, Name, Gender), (Gender), ());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2399 次 |
| 最近记录: |