gpt4 book ai didi

sql - PostgreSQL - 使第一行显示为其他行的总和

转载 作者:行者123 更新时间:2023-11-29 11:16:26 24 4
gpt4 key购买 nike

有什么方法可以使第一行与其余行不同,以便显示相应列的总和?

例如:

      fruits|a|b|c
total|3|4|6
apples|1|2|3
bananas|1|1|2
oranges|1|1|1

是否可以这样查询,或者是否违反了sql的逻辑?就像这样(暂时忽略第一行):

SELECT fruits, sum(a), sum(b), sum(c)
FROM basket

所以第一行会有所不同。它会显示单词“total”而不是水果名称,并且会显示 a (1+1+1=3)、b (2+1+1=4) 和 c (3+2+1=6) 的总和.有可能这样做吗?谢谢

最佳答案

您可以避免使用 CTE 对表进行第二次完整扫描:

PostgreSQL 9.2 架构:

create table basket(fruits text, a integer, b integer, c integer);
insert into basket(fruits, a, b, c) values('apples', 1, 1, 1),
('apples', 0, 1, 2),
('bananas', 1, 1, 2),
('oranges', 1, 1, 1);

查询:

with w as ( select fruits, sum(a) a, sum(b) b, sum(c) c
from basket
group by fruits )
select * from w union all select 'total', sum(a), sum(b), sum(c) from w

结果:

|  FRUITS | A | B | C |
-----------------------
| bananas | 1 | 1 | 2 |
| oranges | 1 | 1 | 1 |
| apples | 1 | 2 | 3 |
| total | 3 | 4 | 6 |

SQL Fiddle here

关于sql - PostgreSQL - 使第一行显示为其他行的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13839878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com