有没有办法让第一行与其他行不同,所以它会显示相应列的总和?
例如:
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 |