gpt4 book ai didi

sql - 带有 limit 子句的窗口函数

转载 作者:行者123 更新时间:2023-11-29 14:26:47 28 4
gpt4 key购买 nike

给定这个团队数据集

id | team_name | points
1 | A | 10
2 | B | 20
3 | C | 30
4 | D | 40
5 | E | 50

我可以将此查询与窗口函数结合使用来获取前 3 名团队的平均值

with top_3 as(
select *
from teams
order by points desc
limit 3
)

select *, avg(points) over() as top3_average
from top_3

是否可以只对数据集的前 3 行使用窗口函数?

我试过了,但这肯定行不通。

OVER(... limit 3)

这是一个有效的 sqlfiddle


需要说明的是,我知道我可以用这样的子查询来做到这一点。我更有兴趣了解是否可以使用窗口函数

select *, avg(points) over() as top3_average
from teams
where id in
(select id
from teams
order by points desc
limit 3)

最佳答案

可以使用 row_number() 窗口函数

with top_3 as(
select * ,row_number() over(order by points desc) rn
from teams


) select * form top_3 where rn<=3

fiddle link

关于sql - 带有 limit 子句的窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57007507/

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