嗨,我是 sql 新手,遇到了问题。
下面是我的表格的示例。这不是确切的表格,而是我想要实现的目标的示例
Name Classification Hits
A A1 2
A A2 3
A A3 4
A A4 8
A A5 9
B B1 9
B B2 3
B B3 4
B B4 8
B B5 9
c c1 8
c c2 9
c c3 4
c c4 8
c c5 9
...
我正在寻找基于热门点击的结果。例如
Name Classification Hits
A A4 8
A A5 9
B B1 9
B B5 9
c c2 9
c c5 9
我已经尝试过这个查询
SELECT TOP (2) Name , Classification , Hits
FROM Table4
Group By Name , Classification , Hits
Order By Hits
但我只得到两个值。我在这里做错了什么有什么建议吗?
最佳答案
您可以将 CTE 与 Row_Number()
函数结合使用
;WITH CTE AS(
SELECT Name,
Classification,
Hits,
Row_Number() OVER(Partition by name ORDER BY Hits DESC) AS RowNum
FROM Table4
)
SELECT Name,
Classification,
Hits
FROM CTE
WHERE RowNum <= 2
ORDER BY Name, Hits
关于Sql 在每个分类中获取前 2 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927249/