每天一道大厂SQL题【Day10】电商分组TopK实战_有一个账号表如下,请写出 sql 语句,查询各自区组的 money 排名前十的账号(分组 取

44 阅读3分钟

每天一道大厂SQL题【Day10】电商分组TopK实战

大家好,我是Maynor。相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典SQL题,以每日1题的形式,带你过一遍热门SQL题并给出恰如其分的解答。

一路走来,随着问题加深,发现不会的也愈来愈多。但底气着实足了不少,相信不少朋友和我一样,日积月累才是最有效的学习方式!

每日语录

别看别人表面上一帆风顺,实际上他们背地里,也是一帆风顺。

C:\Users\ADMINI~1\AppData\Local\TemputoolsDoutuPlugin/tempImage1676026781357.gif

第10题:电商分组TopK实战

需求

有一个账号表如下,请写出SQL语句,查询各自区组的money排名前十的账号(分组取前10)

dist_id string ‘区组id’,

account string ‘账号’,

gold int ’ 金 币 ’ 实现

请写出SQL语句,查询充值日志表2019年01月02号每个区组下充值额最大的账号,要求结果: 区组id,账号,金额,充值时间

实现:

数据准备

CREATE TABLE test_sql.test10(
`dist\_id` string COMMENT '区组id',
`account` string COMMENT '账号',
`gold` int COMMENT '金币');

INSERT INTO TABLE test_sql.test10 VALUES ('1','77',18); INSERT INTO TABLE test_sql.test10 VALUES ('1','88',106); INSERT INTO TABLE test_sql.test10 VALUES ('1','99',10); INSERT INTO TABLE test_sql.test10 VALUES ('1','12',13); INSERT INTO TABLE test_sql.test10 VALUES ('1','13',14); INSERT INTO TABLE test_sql.test10 VALUES ('1','14',25); INSERT INTO TABLE test_sql.test10 VALUES ('1','15',36); INSERT INTO TABLE test_sql.test10 VALUES ('1','16',12); INSERT INTO TABLE test_sql.test10 VALUES ('1','17',158); INSERT INTO TABLE test_sql.test10 VALUES ('2','18',12); INSERT INTO TABLE test_sql.test10 VALUES ('2','19',44); INSERT INTO TABLE test_sql.test10 VALUES ('2','10',66); INSERT INTO TABLE test_sql.test10 VALUES ('2','45',80); INSERT INTO TABLE test_sql.test10 VALUES ('2','78',98);

思路分析

首先,可以通过使用分组字段,求出每个区组下的所有账号的金额总和。

然后,可以使用排序,对每个分组按金额从大到小排序,并选取前10个记录。

最后,限制日期为2019年01月02号,以获得满足要求的结果。

答案获取

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

加技术群讨论

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

img img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

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