admin

使用GROUP或RANK中的WHERE的SQL语句

sql

我有一个大约 35,000行 的销售快照。让我们称之为列:

Sales Rep | Account ID | Total Contract Value | Date

我需要的一切组Sales Rep,然后从那里,选择Sales Rep基于关闭前35位账户Total ContractValue,其中Total Contract Value为> = 10,000月(日)$ 2013年1月的

因此,举例来说,假设约翰·多伊(John Doe)从1月开始在此表中有294个帐户,我只想查看他的前35个帐户> = $ 10,000,与简·多伊(Jane
Doe)相同,依此类推。等等。尽可能的使用。

有什么想法吗?


阅读 221

收藏
2021-06-07

共1个答案

admin

为此,您想使用一个称为的函数row_number()

select ss.*
from (select ss.*, row_number() over (partition by salesrep order by ContractValue desc) as seqnum
      from snapshot ss
      where TotalContractValue >= 10000 and date between '2013-01-01' and '2013-01-31'
     ) ss
where seqnum <= 35

您没有指定正在使用的数据库。在没有的数据库中row_number(),有些替代方法的效率较低。

2021-06-07