Mysql SQL中是否有方法获取前n行,按日期、每个ID排序(而不仅仅是顶部的前n行)
我在数据库中有一系列付款记录。我只需要每个id的前n条记录,这些记录的总和小于每个id的另一个列变量(初始发票)Mysql SQL中是否有方法获取前n行,按日期、每个ID排序(而不仅仅是顶部的前n行),mysql,sql,Mysql,Sql,我在数据库中有一系列付款记录。我只需要每个id的前n条记录,这些记录的总和小于每个id的另一个列变量(初始发票) select * FROM db.paymentrecords Order by PaymentDate; 索引是处理这个问题的正确方法吗?我不确定如何指定MYSQL只从每个分组中获取前n条记录(每个分组只是每个id的所有付款) 这个想法是要计算出在任何时候发票上累计支付了多少钱 也许是类似于 WHERE sum(first n records in each grouping
select *
FROM db.paymentrecords
Order by PaymentDate;
索引是处理这个问题的正确方法吗?我不确定如何指定MYSQL只从每个分组中获取前n条记录(每个分组只是每个id的所有付款)
这个想法是要计算出在任何时候发票上累计支付了多少钱
也许是类似于
WHERE sum(first n records in each grouping < aggregate invoice amount)
WHERE sum(每个分组中的前n个记录<总发票金额)
我觉得这应该是直截了当的,但我不确定如何用SQL逻辑地做到这一点。如蒙协助,将不胜感激。谢谢大家
编辑**所以对我来说,它在sql中有点太复杂了,我们切换并使用python编程来执行我们需要的逻辑。我仍然不确定如何在sql中通过索引每组记录来实现这一点?谢谢大家的帮助 在MySQL 8+中,您可以使用窗口函数:
select pr.*,
sum(amount) over (partition by id order by paymentdate) as running_amount
from db.paymentrecords pr;
你能添加你正在查询的数据库结构吗?