首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按子类别和diapazone计算

如何按子类别和diapazone计算
EN

Stack Overflow用户
提问于 2020-11-04 15:08:50
回答 2查看 21关注 0票数 0

我有桌子

代码语言:javascript
复制
+----------+-------------+-----------+-------+
| Category | Subcategory | Diapazone | Summa |
+----------+-------------+-----------+-------+
| A        | M           |         1 |    10 |
| A        | M           |         2 |    20 |
| A        | S           |         3 |    30 |
| A        | S           |         4 |    40 |
| B        | M           |         5 |    50 |
| B        | S           |         6 |    60 |
| B        | S           |         7 |    70 |
| B        | S           |         8 |    80 |
+----------+-------------+-----------+-------+

我需要

代码语言:javascript
复制
+----------+-------------+-----+-----+-----+
| Category | Subcategory | 1-3 | 4-6 | 7-8 |
+----------+-------------+-----+-----+-----+
| A        | M           |  30 |   0 |   0 |
| A        | S           |  30 |  40 |   0 |
| B        | M           |   0 |  50 |   0 |
| B        | S           |   0 |  60 | 150 |
|          | total M     |  30 |  50 |   0 |
|          | total S     |  30 | 100 | 150 |
+----------+-------------+-----+-----+-----+

在重水区中,有一个类别和子类别的总和。你能帮我做这个吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-04 15:15:42

您可以尝试使用条件聚合

代码语言:javascript
复制
select category, subcategory, 
       sum(Summa) FILTER (WHERE Diapazone between 1 and 3) as '1-3',
       sum(Summa) FILTER (WHERE Diapazone between 4 and 6) as '4-6',
       sum(Summa) FILTER (WHERE Diapazone between 7 and 8) as '7-8'
from tablename
group by category, subcategory
union all
select '', concat('Total ',subcategory), 
           sum(Summa) FILTER (WHERE Diapazone between 1 and 3) as '1-3',
           sum(Summa) FILTER (WHERE Diapazone between 4 and 6) as '4-6',
           sum(Summa) FILTER (WHERE Diapazone between 7 and 8) as '7-8'
from tablename
group by concat('Total ',subcategory)
票数 1
EN

Stack Overflow用户

发布于 2020-11-04 15:38:53

代码语言:javascript
复制
select COALESCE(category, CONCAT('Total ',category)), 
       COALESCE(subcategory, CONCAT('Total ',subcategory)),
       sum(Summa) FILTER (WHERE Diapazone between 1 and 3) as '1-3',
       sum(Summa) FILTER (WHERE Diapazone between 4 and 6) as '4-6',
       sum(Summa) FILTER (WHERE Diapazone between 7 and 8) as '7-8'
from tablename
group by ROLLUP(category, subcategory)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64675524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档