SQL Oracle - 上个月每个代理的50条记录

时间:2018-06-12 10:15:42

标签: sql oracle limit-per-group

我有一个表(processed_amounts),显示'amount','date_processed'和处理金额的'agent'。我需要一个查询,它将在指定的时间段内(例如上个月)为多个代理的列表提取指定数量的已处理条目,例如50个已处理的条目。有没有办法在一个查询中写这个,因为我将每月运行一次?所以说我需要一份包含10个不同代理商的50个条目的报告,这些代理在2018年5月份处理过,我可以将其纳入一个查询吗?

因此,例如,表格如下所示;

Date_Processed │ Amount │ Agent   
01/05/2018     │ £35:90 │ tbrown  
25/05/2018     │ £79:00 │ asmith 

我的查询需要为2018年5月的tbrown和asmith提取50个条目。

非常感谢,感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用row_number()

select pa.*
from (select pa.*,
             row_number() over (partition by agent order by ?) as seqnum
      from processed_amounts pa
      where agent in ( . . . ) and -- list of agents here
            date_processed >= '2018-05-01' and
            date_processed < '2018-06-01'
     ) pa
where seqnum <= 50;

?用于确定哪个 50的列 - 月份中的第一个,最后一个,任意50个,随机50个等等。如果你不在乎哪个50,你可以放入agent任意50行。