这是我的表:
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)
这是使用一个查询执行此操作的好方法,但它是一个复杂的查询,如果在非常大的表上使用它,则应小心。