每天一道大厂SQL题【Day03】订单量统计_sql查询每天的订单量,面试大数据开发系统架构

68 阅读3分钟

请给出sql进行统计:

(1) 给出 2017年每个月的订单数、用户数、总成交金额。
(2)给出2017年11月的新客数(指在11月才有第一笔订单)

实现?

数据准备

CREATE TABLE test_sql.test3 (
dt string, order_id string, user_id string,
amount DECIMAL ( 10, 2 ) ) ROW format delimited FIELDS TERMINATED BY '\t';

INSERT INTO TABLE test_sql.test3 VALUES ('2017-01-01','10029028','1000003251',33.57); INSERT INTO TABLE test_sql.test3 VALUES ('2017-01-01','10029029','1000003251',33.57); INSERT INTO TABLE test_sql.test3 VALUES ('2017-01-01','100290288','1000003252',33.57); INSERT INTO TABLE test_sql.test3 VALUES ('2017-02-02','10029088','1000003251',33.57); INSERT INTO TABLE test_sql.test3 VALUES ('2017-02-02','100290281','1000003251',33.57); INSERT INTO TABLE test_sql.test3 VALUES ('2017-02-02','100290282','1000003253',33.57); INSERT INTO TABLE test_sql.test3 VALUES ('2017-11-02','10290282','100003253',234); INSERT INTO TABLE test_sql.test3 VALUES ('2018-11-02','10290284','100003243',234);

思路分析

–(1)给出 2017年每个月的订单数、用户数、总成交金额。
–先通过日期字段 “Date” 进行分组,将每个月的数据分别分组。
–对每个分组,统计订单数(count(Order_id))、用户数(count(distinct User_id))、总成交金额(sum(amount))。
–筛选日期为2017年的数据。
–将统计结果按月份进行排序。

–(2)给出2017年11月的新客数(指在11月才有第一笔订单)
首先,通过分组和求最小值,我们确定了每个用户的第一次订单日期。然后,我们对这些数据进行二次筛选,以确定仅在 11 月首次出现的用户。最后,通过对 user_id 的 DISTINCT 统计,可以确定新客数。

答案获取

建议你先动脑思考,动手写一写再对照看下答案,如果实在不懂可以点击下方卡片,回复:大厂sql 即可。
参考答案适用HQL,SparkSQL,FlinkSQL,即大数据组件,其他SQL需自行修改。

加技术群讨论

点击下方卡片关注 联系我进群

或者直接私信我进群

后记

📢博客主页:manor.blog.csdn.net

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 Maynor 原创,首发于 CSDN博客🙉
📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
📢专栏持续更新,欢迎订阅:blog.csdn.net/xianyu120/c…

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!