SQL Query获取组的前2条记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Query获取组的前2条记录相关的知识,希望对你有一定的参考价值。
我有一个以下输入表
Source EventType
A X
A X
A X
A Y
A Y
A Z
B L
B L
B L
B L
B M
B N
B N
预期产出
Source EventType Frequency
A X 3
A Y 2
B L 4
B N 2
如何形成一个SQL查询来获得如上所示的结果?我能够取得成果,但一次只有一个来源。
select TOP 2 eventype, count(*) as frequencey
from myEventTable
where source = 'A'
group by eventtype
order by count(*) desc
答案
我们可以在这里使用ROW_NUMBER
:
WITH cte AS (
SELECT Source, EventType, COUNT(*) as Frequency,
ROW_NUMBER() OVER (PARTITION BY Source ORDER BY COUNT(*) DESC) rn
FROM myEventTable
GROUP BY Source, Eventtype
)
SELECT Source, EventType, Frequency
FROM cte
WHERE rn <= 2;
这样做的原因是在ROW_NUMBER
操作完成后应用GROUP BY
,即它针对组运行。然后我们可以轻松地限制每个源的前2个,按频率下降排序。
以上是关于SQL Query获取组的前2条记录的主要内容,如果未能解决你的问题,请参考以下文章