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%。