本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql”
学习窗口函数这部分我觉得并没有想象中那么难,因为其中有一部分知识跟之前的内容有关联 ,比如说有GROUP BY 语句的分组功能。窗口函数相对于select语句不同的是select语句是对整张表进行查询,而窗口函数是有选择的去某一部分数据进行汇总、计算和排序。值得注意的是,之前的聚合函数也可以在窗口函数中进行使用。如:
"
SELECT product_id ,
product_name ,
sale_price ,
SUM(sale_price) OVER (ORDER BY product_id) AS current_sum ,
AVG(sale_price) OVER (ORDER BY product_id) AS current_avg
FROM product;
"
此函数出来的是一个累计的聚合函数值。
专用窗口函数也是分为好几种,有RANK函数,DENSE_RANK函数和ROW_NUMBER函数
,他们分别使用的排序是英式排序,中式排序和连续位数排序。不知道运用最广泛的是哪种排序?可能在中国使用中国排序更多。
对于窗口函数来说,值得注意的是原则上,窗口函数只能在SELECT子句中使用,并且窗口函数OVER 中的ORDER BY 子句并不会影响最终结果的排序。其只是用来决定窗口函数按何种顺序计算。