本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql
本次学习的内容为:窗口函数
练习5.1
按照product_id升序排列,计算出截止当前行的最高是sale_price
练习5.2
SELECT product_type,regist_date,sale_price,
SUM(sale_price) OVER (ORDER BY COALESCE(regist_date,
CAST('0001-01-01' as DATE))) as current_sum_price
FROM product;
练习5.3
1.窗口函数不使用PARTITION BY 就是针对排序列进行全局排序。
2.本质上是因为sql语句的执行顺序:
FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY
如果在WHERE,GROUP BY,HAVING 使用了窗口函数,就是说提前进行了一次排序,排序之后再去除记录、汇总、汇总过滤,第一次排序结果就是错误的,没有实际意义。而ORDER BY语句的执行顺序在SELECT语句之后,自然是可以使用的。