【力扣白嫖日记】SQL

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

1407.排名靠前的旅行者

表:Users

列名 类型
id int
name varchar

id 是该表中具有唯一值的列。name 是用户名字。

表:Rides

列名 类型
id int
user_id int
distance int

id 是该表中具有唯一值的列。user_id 是本次行程的用户的 id, 而该用户此次行程距离为 distance 。


我那不值一提的想法:

首先梳理表内容,题干给了两张表,第一张用户表,记录了用户id和姓名,第二张旅行表,记录了id,和用户id和距离,其中用户id和第一张表的id一样。其次分析需求,需要报告每个用户的旅行距离,并且有不一样的逻辑判断,那么我们就先满足距离,在满足名字,就是把距离放在order by 的前面一个值。初次之外,对于没有距离的用户,我们还需要显示出来,并标识为0,这里我们使用ifnull判断,如果是空值,择改成0。

我一开是是用name去分组的,但是如果用name分组就忽略了名字一样的情况,就会出现错误,我们应该用表的主键唯一列id进行分组,也就是order by u.id

sql 复制代码
select u.name,ifnull(sum(r.distance),0) as travelled_distance
from Users u 
left join Rides r 
on u.id = r.user_id
group by u.name
order by sum(r.distance) desc,u.name

也就是这样:

sql 复制代码
select u.name,ifnull(sum(r.distance),0) as travelled_distance
from Users u 
left join Rides r 
on u.id = r.user_id
group by u.id
order by sum(r.distance) desc,u.name

结果:


总结:

能运行就行。


相关推荐
NocoBase37 分钟前
10 个开源工具,快速构建数据应用
数据库·低代码·开源
元亓亓亓1 小时前
LeetCode热题100--101. 对称二叉树--简单
算法·leetcode·职场和发展
麻辣清汤1 小时前
结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
数据库·python·sql·finebi
Kan先生3 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python
超级迅猛龙3 小时前
保姆级Debezium抽取SQL Server同步kafka
数据库·hadoop·mysql·sqlserver·kafka·linq·cdc
杨过过儿3 小时前
【Task02】:四步构建简单rag(第一章3节)
android·java·数据库
····懂···4 小时前
攻克PostgreSQL专家认证
数据库·postgresql
1白天的黑夜14 小时前
链表-24.两两交换链表中的结点-力扣(LeetCode)
数据结构·leetcode·链表
每天都在想吃啥4 小时前
day31 SQLITE
数据库·sqlite
m0_748254097 小时前
2025最新华为云国际版注册图文流程-不用绑定海外信用卡注册
服务器·数据库·华为云