首页 > 解决方案 > SQL:如何使用 GROUP BY 获取所有行

问题描述

给定这个示例表。我想获得债务总和> 1000的所有行。

TABLE_1

ID   NAME        DEBT
1    Daniel      1000
2    Daniel      10    
3    Xavier      500
4    Ricardo     600
5    Ricardo     300
6    Eduardo     2000
7    Eduardo     1000

结果表应为:

RESULT

ID   NAME        DEBT
1    Daniel      1000
2    Daniel      10
6    Eduardo     2000
7    Eduardo     1000

这是因为 Daniel 的债务是 1010,所以大于 1000。对于 Eduardo 也是如此,它的债务是 3000。重要的结果是 ID。如何在 SQL 中进行此查询?

标签: sqlpostgresql

解决方案


您可以使用窗口函数:

select t.*    -- or whatever columns you want
from (select t.*,
             sum(debt) over (partition by name) as sum_debt
      from t
     ) t
where sum_debt > 1000;

推荐阅读