PostgreSQL – 将第一行显示为其他行的总和
发布时间:2020-12-13 16:16:27 所属栏目:百科 来源:网络整理
导读:有没有办法让第一行与其他行不同,所以它会显示相应列的总和? 例如: 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)
有没有办法让第一行与其他行不同,所以它会显示相应列的总和?
例如: 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),('apples',2),('bananas',('oranges',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(c) from w 结果: | FRUITS | A | B | C | ----------------------- | bananas | 1 | 1 | 2 | | oranges | 1 | 1 | 1 | | apples | 1 | 2 | 3 | | total | 3 | 4 | 6 | SQL小提琴here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |