gpt4 book ai didi

sql-server - 如果相同的 id 重复,则限制行数

转载 作者:行者123 更新时间:2023-12-02 20:42:44 25 4
gpt4 key购买 nike

我有一个如下表

ID   |   s_id   |   mark
-----------------------
1 | 2 | 10
2 | 5 | 9
3 | 7 | 8
4 | 2 | 8
5 | 2 | 10
6 | 5 | 7
7 | 3 | 7
8 | 2 | 9
9 | 5 | 8

我需要获取 SQL 查询的输出,例如:-标记列需要按降序排列。相同的 s_id 不应重复超过 2 次如果相同的s_id重复超过2次,则忽略第三个结果

ID   |   s_id   |   mark
-----------------------
1 | 2 | 10
2 | 2 | 9
3 | 3 | 7
4 | 5 | 9
5 | 5 | 8
6 | 7 | 8

最佳答案

假设您使用的是 SQL Server,则只需使用 ROW_NUMBER()为每个 s_id 分配行号基于 mark 降序排列的组柱子。然后,仅保留行号为 1 或 2 的记录。

SELECT
t.ID, t.s_id, t.mark
FROM
(
SELECT ID, s_id, mark, ROW_NUMBER() OVER (PARTITION BY s_id ORDER BY mark DESC) rn
FROM yourTable
) t
WHERE t.rn <= 2
ORDER BY t.s_id;

注意:您会注意到记录 (s_id, mark) = (2, 10)在我的结果集中出现两次。根据您的输入数据,将生成以下内容。如果您确实打算删除重复的 (s_id, mark)对,然后让我们知道,并且可以在查询中添加一个小修正。

输出:

enter image description here

此处演示:

Rextester

关于sql-server - 如果相同的 id 重复,则限制行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45587123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com