问题:使用 mssql 检查 Rahul 在第 1 学期和第 2 学期得分最高的 3 门科目中是哪个科目?
如果我在相交之前使用 order by ,则代码不起作用。但如果我不分别按降序对两个表的数据进行排序,那么前 3 个选择将是错误的。
请帮忙
我的做法: 从结果中选择前 3 个主题 其中考试=‘Term_1’ 按标记顺序排序 相交 从结果中选择前 3 个主题 其中考试=‘Term_2’ 按标记顺序
我们可以在这里使用
RANK()
分析函数:
WITH cte AS (
SELECT subject, RANK() OVER (PARTITION BY exam ORDER BY marks DESC) rnk
FROM RESULT
WHERE exam IN ('Term_1', 'Term_2')
)
SELECT DISTINCT subject
FROM cte
WHERE rnk <= 3;