这是面试问题。 假设我有一张桌子和一张桌子。在该表中只有一列。
Details
a
a
a
a
b
b
b
c
d
d
d
这是数据。现在我想要每个小组的前2名。
Details
a
a
b
b
c
d
d
如何得到这个结果。
答案 0 :(得分:4)
使用Window Function
获取每组中的前两行
SELECT Details
FROM (SELECT *,
Row_number()OVER(partition BY Details ORDER BY Details) rn
FROM tablename) a
WHERE rn <= 2
注意:在order by
根据您的要求将订单更改为Asc
或Desc