每天一道大厂SQL题【Day03】订单量统计

简介: 每天一道大厂SQL题【Day03】订单量统计

每日语录

有些习惯,终究要用一生的时光改变。就像,某些不可言明的怀念。往往在夜深人静时,轰然来袭。刺痛到心底最柔软的地方,无力挣扎。不是不幸福,只是仍旧贪心眷恋过去的某种感受而不够幸福

第3题:订单量统计

需求

已知一个表STG.ORDER,有如下字段:Date,Order_id,User_id,amount。

数据样例:2017-01-01,10029028,1000003251,33.57。

请给出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需自行修改。

目录
相关文章
|
5月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day06】电商购买金额统计实战
每天一道大厂SQL题【Day06】电商购买金额统计实战
40 0
|
5月前
|
SQL 存储 大数据
每天一道大厂SQL题【Day02】电商场景TopK统计
每天一道大厂SQL题【Day02】电商场景TopK统计
38 1
|
5月前
|
SQL 大数据 API
每天一道大厂SQL题【Day08】服务日志SQL统计
每天一道大厂SQL题【Day08】服务日志SQL统计
42 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle-Oracle SQL Report (awrsqrpt.sql/awrsqrpi.sql)生成指定SQL的统计报表
Oracle-Oracle SQL Report (awrsqrpt.sql/awrsqrpi.sql)生成指定SQL的统计报表
34 0
|
1月前
|
SQL 关系型数据库 MySQL
mysql一条sql查询出多个统计结果
mysql一条sql查询出多个统计结果
15 0
|
2月前
|
SQL
现有用户成就统计需求,每个用户有多个成就,某一个成就会被多人拥有,写出数据表设计方案,用一条sql查出每个成就(B.ach_name)下的男生(sex=0)和女生(sex=1)分别有多少?
现有用户成就统计需求,每个用户有多个成就,某一个成就会被多人拥有,写出数据表设计方案,用一条sql查出每个成就(B.ach_name)下的男生(sex=0)和女生(sex=1)分别有多少?
41 0
|
4月前
|
SQL
leetcode-SQL-580. 统计各专业学生人数
leetcode-SQL-580. 统计各专业学生人数
27 0
|
4月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_60 每日新用户统计
「SQL面试题库」 No_60 每日新用户统计
|
4月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_28 订单最多的客户
「SQL面试题库」 No_28 订单最多的客户
|
4月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_25 统计各专业学生人数
「SQL面试题库」 No_25 统计各专业学生人数