gpt4 book ai didi

使用 ORDER BY 的 SQL 查询第 2 部分

转载 作者:行者123 更新时间:2023-12-04 20:29:06 24 4
gpt4 key购买 nike

这是后续问题: SQL Query with ORDER BY

但我认为 SQL 逻辑会大不相同,所以我将其作为单独的问题发布。

我正在尝试扩展我的 sql SELECT 查询,但遇到了一些问题:

我有 table :

id    type      radius
-------------------------
1 type1 0.25
2 type2 0.59
3 type1 0.26
4 type1 0.78
5 type3 0.12
6 type2 0.45
7 type3 0.22
8 type3 0.98

我正在尝试学习如何SELECT 每个给定类型的第二小半径。所以返回的记录集应该是这样的:

id    type      radius
-------------------------
3 type1 0.26
2 type2 0.59
7 type3 0.22

(注意:在引用的问题中,我正在寻找最小半径,而不是第二最小半径)。

我假设我必须使用 LIMITOFFSET,但是如果我使用 MIN() 将不会返回不同的包含最小半径的记录?

有没有人想过如何攻击它?

非常感谢,布雷特

最佳答案

您没有提到您的 DBMS,所以我将发布一个适用于支持标准窗口函数的 DBMS 的解决方案:

SELECT *FROM (  SELECT id,          type,         radius,          dense_rank() OVER (PARTITION BY type ORDER BY radius ASC) as radius_rank  FROM radius_table) tWHERE radius_rank = 2

您可以通过调整 WHERE 条件轻松地选择第 3 个最低或第 14 个最低

如果您有不止一行符合第二低的条件(LIMIT 解决方案只会显示其中之一),此解决方案也适用

关于使用 ORDER BY 的 SQL 查询第 2 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634068/

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