Postgresql 对循环中的sql数据求和
我有一张桌子Postgresql 对循环中的sql数据求和,postgresql,select,group-by,sum,Postgresql,Select,Group By,Sum,我有一张桌子 s_hostid | s_name | s_size ----------+------------+-------------- 5 | 2014-01-09 | 1082705867 5 | 2014-01-08 | 1082713736 5 | 2014-01-04 | 1082686097 5 | 2014-01-03 | 1082677818 5 | 2014-
s_hostid | s_name | s_size
----------+------------+--------------
5 | 2014-01-09 | 1082705867
5 | 2014-01-08 | 1082713736
5 | 2014-01-04 | 1082686097
5 | 2014-01-03 | 1082677818
5 | 2014-01-06 | 1082701853
10 | 2014-01-06 | 7536036
10 | 2014-01-02 | 7536032
10 | 2014-01-08 | 7536036
10 | 2014-01-01 | 7536020
10 | 2014-01-05 | 7536036
10 | 2014-01-03 | 7536032
10 | 2014-01-09 | 7536032
50 | 2014-01-03 | 11416224886
11 | 2014-01-01 | 39
11 | 2014-01-06 | 39
11 | 2014-01-07 | 39
11 | 2014-01-09 | 39
36 | 2014-01-02 | 22164534
如何获得每个值s_名称的总和值s_大小字段?
我试过这个
"SELECT s_name,(select sum(s_size) from storage where s_name = (select distinct s_name from storage)) from storage"
但是有一个错误:
ERROR: more than one row returned by a subquery used as an expression
感谢您的回复。这就是
group by
子句的作用-它将查询分解为多个组,并对每个组应用聚合函数。
就你而言:
SELECT s_name, SUM(s_size)
FROM my_table
GROUP BY s_name
简单地聚合就太基本了 我假设您正在查找,即返回每一行,每个组的所有行都有一个总和:
SELECT s_name, sum(s_size) OVER (PARTITION BY s_name) AS group_sum
FROM tbl;
在这种情况下,众所周知的聚合函数
sum()
在添加OVER
子句后充当窗口函数。您的意思是不聚合行吗?谢谢!这就是我需要的!谢谢,但answer@Mureinik的点击率为100%。