SQL实战 | 窗口函数:计算每年新增用户数

一 题目

计算每年新增用户数。


二 数据表结构:

数据表 orders 是基于 Kaggle 网站的 Superstore 销售数据整理得到,本次涉及的列:

1. order_date:订单日期,格式为VARCHAR(20),具体形式如“11/8/2016”

2. customer_id:客户ID


三 错误写法

代码:

运行结果:

问题:

1. FIRST_VALUE() OVER() 必须带ORDER BY,否则不会按时间先后选择第一条订单

2. 定义orders_first 时,因为SELECT中使用了窗口函数,窗口函数对所有行作用,所以使用的DISTINCT 无法保证只取一条记录


四 修改及改进

语句修改:

改进:

改用ROW_NUMBER()使方案更安全和规范

运行结果:



五 总结

1. 窗口函数FIRST_VALUE() OVER(),必须使用ORDER BY

2. 窗口函数对所有行起作用

3. 使用DISTINCT时,要注意使用位置



— END —

数据分析,一起努力。

Thryze|数据分析 × AI能力成长 × 效率工具探索

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。