select *,
rank() over(PARTITION by scourse order by sresult) as ranking
from score;
select scourse,count(sid)
from score
GROUP BY scourse
order by scourse;-- group by
select scourse,
count(scourse) over(partition by scourse order by scourse) AS CURRENT_count
from score;-- 窗口函数
SELECT *,
rank() over (PARTITION BY scourse ORDER BY sresult DESC) AS ranking,
dense_rank() over (PARTITION BY scourse ORDER BY sresult DESC) AS des_rank,
row_number() over (PARTITION BY scourse ORDER BY sresult DESC) AS row_num
FROM score
-- rank:存在并列排名,且占用原来名次
dense_rank:存在并列排名,不占用原来名次
row_number:不存在并列排名
SELECT sresult,
dense_rank() over (PARTITION BY scourse ORDER BY sresult DESC) AS des_rank
FROM score
SELECT *
FROM score as a
WHERE sresult = (SELECT max(sresult) FROM score as b WHERE b.scourse = a.scourse);-- 关联子查询
SELECT *
FROM score as a
WHERE sresult = (SELECT min(sresult) FROM score as b WHERE b.scourse = a.scourse);-- 关联子查询
把子查询结果当成一个表,注意这个表要给他命名
SELECT *,总结:Top N问题的常见解法
SELECT *6、聚合函数作为窗口函数
FROM (SELECT *, row_number() over (partition by sid order by sresult DESC) as ranking FROM score)as a
WHERE ranking <=N;
SELECT *,
sum(sresult) over (partition by sid order by sresult) as current_sum,
avg(sresult) over (partition by sid order by sresult) as current_avg,
count(sresult) over (partition by sid order by sresult) as current_count,
max(sresult) over (partition by sid order by sresult) as current_max,
min(sresult) over (partition by sid order by sresult) as current_min
FROM score;
select *总结:查找每个组里大于平均值的数据
from (
SELECT *, avg(sresult) over (partition by scourse) as avg_score FROM score
) as a
where sresult > avg_score ;
select *
from score a
where sresult > (
select avg(sresult) from score b where a.scourse=b.scourse group by scourse)
SELECT *,
avg(sresult) over (order by scourse rows 2 preceding) as current_avg
FROM score;
比如第四行的current_avg,是等于自己的sresult(90)+它前两行的sresult(60+80)的平均值
免责申明:
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack