如何将2个表的数据按降序排列,然后将两个表相交?

问题描述 投票:0回答:1

问题:使用 mssql 检查 Rahul 在第 1 学期和第 2 学期得分最高的 3 门科目中是哪个科目?

如果我在相交之前使用 order by ,则代码不起作用。但如果我不分别按降序对两个表的数据进行排序,那么前 3 个选择将是错误的。

请帮忙

我的做法: 从结果中选择前 3 个主题 其中考试=‘Term_1’ 按标记顺序排序 相交 从结果中选择前 3 个主题 其中考试=‘Term_2’ 按标记顺序

sql sql-order-by intersect jointjs consolidation
1个回答
0
投票

我们可以在这里使用

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;
© www.soinside.com 2019 - 2024. All rights reserved.