SQL:如何在字段总和限制为某个值的情况下对行进行分组?

  • 本文关键字:情况下 字段 SQL sql group-by sum
  • 更新时间 :
  • 英文 :


这是我的表:

id  user_id  date          balance
1   1        2016-05-10    10
2   1        2016-05-10    30
3   2        2017-04-24    5
4   2        2017-04-27    10
5   3        2017-11-10    40

我想按user_id对行进行分组并对余额求和,但使总和等于或小于 30。此外,我需要显示组中的最小日期。它应该看起来像这样:

id      balance date_start
1-1      10     2016-05-10
1-2      30     2016-05-10
2-1      15     2017-04-24

请原谅我的语言。谢谢。

您应该能够通过使用 group by & haveing 来做到这一点,这里有一个可以解决您的情况的示例:

SELECT id, user_id, SUM(balance) as balance, data_start
FROM your_table
GROUP BY user_id
HAVING SUM(balance) >= 30
AND MIN(date_start)

这是使用一个查询执行此操作的好方法,但它是一个复杂的查询,如果在非常大的表上使用它,则应小心。

最新更新