【问题标题】:SQL: How to get all rows using GROUP BYSQL:如何使用 GROUP BY 获取所有行
【发布时间】:2021-06-04 03:09:14
【问题描述】:

鉴于此示例表。我想得到所有债务总和 > 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 中进行此查询?

【问题讨论】:

  • 只标记您使用的数据库。

标签: sql postgresql


【解决方案1】:

你可以使用窗口函数:

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;

【讨论】:

    【解决方案2】:

    您可以使用嵌套查询。

    SELECT * FROM TABLE1 WHERE NAME IN ( SELECT NAME FROM TABLE1 GROUP BY NAME HAVING SUM(DEBT)>1000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2010-09-26
      相关资源
      最近更新 更多