开窗函数:普遍聚合函数(列) over()

SUM()  over()
MAX()
MIN()
COUNT()
AVG() 
SELECT *,SUM(score) FROM sc;
SELECT *,1+1,NOW(),(CASE WHEN ) FROM sc;
SELECT *,SUM(score) over() FROM sc;
SELECT *,AVG(score) over() FROM sc;
SELECT *,MAX(score) over() FROM sc;
SELECT *,SUM(score) over(PARTITION BY cid) FROM sc;
SELECT *,MAX(score) over(PARTITION BY cid) FROM sc;
SELECT *,SUM(score) over(PARTITION BY cid ORDER BY score ROWS BETWEEN UNBOUNDED PRECEDING AND current ROW ) FROM sc;
SELECT *,SUM(score) over(PARTITION BY cid ORDER BY score ROWS BETWEEN 1 PRECEDING AND current ROW ) FROM sc;
row_number() rank() dense_rank()

row_number() 顺序排序
SELECT *,row_number() over() rn FROM sc;
1,2,3,4,5
SELECT *,row_number() over(PARTITION BY cid ORDER BY score DESC) rn FROM sc;

跳跃排序,如果有两个第一级别时,接下来是第三级别
SELECT *,rank() over(PARTITION BY cid ORDER BY score DESC) rn FROM sc;
1,2,2,4,5

连续排序,如果有两个第一级别时,接下来是第二级别
SELECT *,dense_rank() over(PARTITION BY cid ORDER BY score DESC) rn FROM sc;
1,2,2,3,4

SELECT *
FROM (SELECT *,rank() over(PARTITION BY cid ORDER BY score DESC) rn FROM sc) tmp
WHERE rn<=2;

posted @ 2020-10-26 19:36  L_B_T  阅读(145)  评论(0)    收藏  举报