每天一道大厂SQL题【Day09】充值日志SQL实战

news2024/11/15 8:59:00

每天一道大厂SQL题【Day09】充值日志SQL实战

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

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

每日语录

鱼和熊掌不可兼得,但单身和穷可以!

image-20230210165222066

第9题:充值日志SQL实战

需求

有一个充值日志表credit_log,字段如下:

dist_id int ‘区组id’,

account string ‘账号’,

money int ’ 充 值 金 额 ',

create_time string ‘订单时间’

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

实现:

数据准备

CREATE TABLE test_sql.test9(
dist_id string COMMENT '区组id', account string COMMENT '账号',
`money` decimal(10,2) COMMENT '充值金额', create_time string COMMENT '订单时间');

INSERT INTO TABLE test_sql.test9 VALUES ('1','11',100006,'2019-01-02 13:00:01'); INSERT INTO TABLE test_sql.test9 VALUES ('1','22',110000,'2019-01-02 13:00:02'); INSERT INTO TABLE test_sql.test9 VALUES ('1','33',102000,'2019-01-02 13:00:03');
INSERT INTO TABLE test_sql.test9 VALUES ('1','44',100300,'2019-01-02 13:00:04');
INSERT INTO TABLE test_sql.test9 VALUES ('1','55',100040,'2019-01-02 13:00:05'); INSERT INTO TABLE test_sql.test9 VALUES ('1','66',100005,'2019-01-02 13:00:06'); INSERT INTO TABLE test_sql.test9 VALUES ('1','77',180000,'2019-01-03 13:00:07'); INSERT INTO TABLE test_sql.test9 VALUES ('1','88',106000,'2019-01-02 13:00:08'); INSERT INTO TABLE test_sql.test9 VALUES ('1','99',100400,'2019-01-02 13:00:09'); INSERT INTO TABLE test_sql.test9 VALUES ('1','12',100030,'2019-01-02 13:00:10'); INSERT INTO TABLE test_sql.test9 VALUES ('1','13',100003,'2019-01-02 13:00:20'); INSERT INTO TABLE test_sql.test9 VALUES ('1','14',100020,'2019-01-02 13:00:30'); INSERT INTO TABLE test_sql.test9 VALUES ('1','15',100500,'2019-01-02 13:00:40'); INSERT INTO TABLE test_sql.test9 VALUES ('1','16',106000,'2019-01-02 13:00:50'); INSERT INTO TABLE test_sql.test9 VALUES ('1','17',100800,'2019-01-02 13:00:59'); INSERT INTO TABLE test_sql.test9 VALUES ('2','18',100800,'2019-01-02 13:00:11'); INSERT INTO TABLE test_sql.test9 VALUES ('2','19',100030,'2019-01-02 13:00:12'); INSERT INTO TABLE test_sql.test9 VALUES ('2','10',100000,'2019-01-02 13:00:13'); INSERT INTO TABLE test_sql.test9 VALUES ('2','45',100010,'2019-01-02 13:00:14'); INSERT INTO TABLE test_sql.test9 VALUES ('2','78',100070,'2019-01-02 13:00:15');

思路分析

  1. 先限定时间范围,只选择2019年01月02号的数据
  2. 分组,按照区组id进行分组
  3. 对于每一组数据,找到最大的充值金额
  4. 获取充值金额最大的数据的账号,充值金额,充值时间
  5. 输出查询结果:区组id,账号,金额,充值时间

答案获取

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

加技术群讨论

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

或者直接私信我进群

文末SQL小技巧

提高SQL功底的思路。
1、造数据。因为有数据支撑,会方便我们根据数据结果去不断调整SQL的写法。
造数据语法既可以create table再insert into,也可以用下面的create temporary view xx as values语句,更简单。
其中create temporary view xx as values语句,SparkSQL语法支持,hive不支持。
2、先将结果表画出来,包括结果字段名有哪些,数据量也画几条。这是分析他要什么。
从源表到结果表,一路可能要走多个步骤,其实就是可能需要多个子查询,过程多就用with as来重构提高可读性。
3、要由简单过度到复杂,不要一下子就写一个很复杂的。
先写简单的select * from table…,每个中间步骤都执行打印结果,看是否符合预期, 根据中间结果,进一步调整修饰SQL语句,再执行,直到接近结果表。
4、数据量要小,工具要快,如果用hive,就设置set hive.exec.mode.local.auto=true;如果是SparkSQL,就设置合适的shuffle并行度,set spark.sql.shuffle.partitions=4;

后记

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MMDetection(五)

目标检测工具包 MMDetection MMDetection 可以做什么 ➢ MMDetection 提供 400 余个性能优良的预训练模型,开箱即 用,几行 Python API 即可调用强大的检测能力 ➢ MMDetection 涵盖 60 余个目标检测算法,并提供方便易用的 工具,…

【Spring Cloud】如何修改Feign的日志记录级别

本期目录前言1. 介绍2. 方式一:配置文件1)全局生效2)局部生效3. 方式二:Java代码1)全局配置2)局部配置前言 本次示例代码的文件结构如下图所示。 1. 介绍 Feign 允许我们自定义配置,下面是 …

kubernetes集群部署springcloud项目【AL】【未写完】

kubernetes集群部署springcloud项目【AL】 (先手工做,非自动化) #环境: 192.168.73.138 master 192.168.73.139 node1 192.168.73.140 node2 192.168.73.137 harbor、mysqlgit clone https://github.com/lizhenliang/simple-…

leetcode.1234 替换子串得到平衡字符串 - 反向滑动窗口

1234. 替换子串得到平衡字符串 题目: 有一个只含有 Q, W, E, R 四种字符,且长度为 n 的字符串。 假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」。 给你一个这样的字符串 s,请通过「替换…

信息安全管理

信息安全管理信息安全管理信息安全风险管理信息安全管理体系应急响应与灾难恢复应急响应概况信息系统灾难修复灾难恢复相关技术信息安全管理 管理概念:组织、协调、控制的活动,核心过程的管理控制 管理对象和组成:包括人员在内相关资产&…

【ArcGIS Pro二次开发】(3):UI管理_显示隐藏Tab、Group、Control等控件

在ArcGIS Pro工作中,有时候会涉及到工具栏UI的管理,比如,打开模型构建器时,工具栏才会出现新的选项卡(Tab)【ModelBuilder】,工程未做更改,则【保存】按钮显示灰色不可用。 下面以一个小例子来学习一下。 一…

VScode+cuda编程:常见环境问题

VScodecuda:常见环境配置问题1、VScode终端问题(PS)2、编译问题(CUDA版本过低)3、nvcc编译问题(arch架构)1、VScode终端问题(PS) 问题描述: 在VScode下打开终端执行nvcc指令,发现执行不了,但是在外部终端powershell和cmd都可以。…

波奇学c语言:代码的编译和链接

test.c(源文件)->编译->test.obj(目标文件)->链接->test.exe(可执行文件)编译1.预编译(预处理):text.c->text.i使用gcc -E test.c 进行停止预处理指令&am…

Java修饰符和运算符,超详细整理,适合新手入门

目录 一、访问控制修饰符 1、访问权限 二、运算符 1、算术运算符 2、关系运算符 3、逻辑运算符 4、赋值运算符 5、三元运算符 一、访问控制修饰符 Java 支持 4 种不同的访问权限: private 私有的 protected 受保护的 public 公共的 default 默认 1、…

【手写 Vuex 源码】第九篇 - Vuex 响应式数据和缓存的实现

一,前言 上一篇,主要介绍了 Vuex 的 State 状态安装,主要涉及以下几个点: State 状态的安装逻辑;两个核心问题的思路;代码实现以及执行情况分析; 本篇,继续介绍 Vuex 模块相关概念…

计算机组成原理(五)

3.理解主存储器与CPU的连接原理;   主存通过数据总线、地址总线和控制总线与CPU连接;   数据总线的位数与工作频率的乘积正比于数据传输率;   地址总线的位数决定了可寻址的最大内存空间;   控制总线(读/写&am…

excel操作实例:如何制作一个学习计划阶段图表

预则立不预则废。不管是为了避免被裁员的窘迫,还是为了获得更高的薪水,都有必要在2023年尽快学精Excel,成为行业高手。教程把要成为Excel高手的几道坎,也是要攻克的目标做成图表,希望大家的努力更有效。要变成Excel高手…

Redis 缓存穿透、缓存击穿和缓存雪崩

Redis 缓存穿透和缓存雪崩 缓存穿透和缓存雪崩这两个概念和知识点我们一定要掌握,因为我们工作中经常会遇到缓存穿透和缓存雪崩的情况。 Redis 缓存穿透(查不到) 缓存穿透是指客户端请求一个缓存和数据库中都不存在的 key。由于缓存中不存在…

【遇见青山】项目难点:集群下的分布式锁问题

【遇见青山】项目难点:集群下的分布式锁问题1.问题简介2.分布式锁分析3.基于Redis实现分布式锁1.0版本4.基于Redis实现分布式锁2.0版本,解决锁误删问题5.基于Redis实现分布式锁3.0版本,解决锁的原子性问题1.问题简介 在《【遇见青山】项目难…

Sliver取代Cobalt Strike成黑客渗透工具“新宠”

8月25日消息,攻击者逐渐弃用Cobalt Strike渗透测试套件,转而使用不太知名的类似框架。开源跨平台工具Sliver正取代Brute Ratel成为受攻击者青睐的武器。 在过去的几年里,Cobal Strike被各类攻击者滥用(包括勒索软件操作&#xff…

行为型模式 - 模板方法模式Template Method

学习而来,代码是自己敲的。也有些自己的理解在里边,有问题希望大家指出。 模式的定义与特点 模板方法(Template Method),模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类…

JavaSE XML解析技术的使用详解

文章目录XML解析技术XML解析技术介绍Dom4j解析XML文件Dom4j解析各个节点Dom4j解析案例实战XML解析技术 XML解析技术介绍 XML的数据作用是什么? 最终需要怎样处理? 作用: 存储数据、做配置信息、进行数据传输。 最终需要被程序进行读取,解析里面的信息。 XML解析…

【路径规划】基于A*算法和Dijkstra算法的路径规划(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Python蓝桥杯训练:基本数据结构 [链表]

Python蓝桥杯训练:基本数据结构 [链表] 文章目录Python蓝桥杯训练:基本数据结构 [链表]一、链表理论基础知识二、有关链表的一些常见操作三、力扣上面一些有关链表的题目练习1、[移除链表元素](https://leetcode.cn/problems/remove-linked-list-element…

TCP报头详解及TCP十种核心机制(一)

目录 前言: TCP报头 TCP核心机制 一、确认应答 二、超时重传 小结: 前言: 这篇文章详细介绍了TCP报头中的一些核心数据,及两种TCP核心机制。其他的一些机制会在后面文章中详细介绍。 TCP报头 解释: 1&#xff…