开窗函数:普遍聚合函数(列) 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;