gpt4 book ai didi

sql - 建议一种有效的查询方式

转载 作者:行者123 更新时间:2023-12-04 05:09:54 24 4
gpt4 key购买 nike

给定一个表 [a, b, c, d] ,我想准确选择那些具有 max(a) 的行组内 c
即行 a = select max(a) from table group by c
执行此操作的最有效方法是什么?我可以使用分区条款等吗?

最佳答案

在现实世界中,几乎任何时候都存在可以推测对您有利的线索、问题的特殊性。

您的问题虽然是理想情况,但没有特殊性。此查询将全面扫描表,然后进行一些排序以找到最大值 a:

select a,b,c,d
from(
select
a,
b,
c,
d,
row_number() over (partition by c order by a desc) as rnk_in_group_of_c
from table
)
where rnk_in_group_of_c = 1;

此查询比使用子查询查找最大值要好,因为它可能导致不止一次完整扫描、不需要的嵌套循环或其他性能问题。

请注意,如果您想要所有具有最大 a(即有两个相等的最大行)的行,您应该使用 dense_rank()函数代替 row_number()

关于sql - 建议一种有效的查询方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017134/

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