📚 每日SQL小知识 🐍
每天花1分钟,解锁一个SQL实用技巧/冷知识!无论是新手还是老手,这里都有让你眼前一亮的编程干货。
✨ 今日主题:窗口函数
📊 比GROUP BY更强大的分组计算
-- 销售数据分析示例
SELECT
employee_id,
sale_date,
amount,
-- 计算移动平均
AVG(amount) OVER (
PARTITION BY employee_id
ORDER BY sale_date
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
) AS moving_avg,
-- 计算排名
RANK() OVER (
PARTITION BY sale_date
ORDER BY amount DESC
) AS daily_rank,
-- 计算累计和
SUM(amount) OVER (
PARTITION BY employee_id
ORDER BY sale_date
) AS running_total
FROM sales
WHERE sale_date BETWEEN '2023-01-01' AND '2023-03-31';
💡 窗口函数三要素:
-
PARTITION BY:定义分组范围 -
ORDER BY:指定排序规则 -
frame_clause:确定计算范围(如ROWS BETWEEN...)
📈 性能优化技巧:
-
对分区字段建立索引
-
避免在WHERE条件中使用窗口函数结果
-
大数据集考虑使用物化视图
你学会了吗?
857

被折叠的 条评论
为什么被折叠?



