当前位置: 首页 > news >正文

力扣-排名靠前的旅行者

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:1407. 排名靠前的旅行者
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.正确示范④
      • 提交SQL
      • 运行结果
    • 5.其他
  • 总结


前言


一、题目:1407. 排名靠前的旅行者

表:Users

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| name          | varchar |
+---------------+---------+

id 是该表单主键。
name 是用户名字。
表:Rides

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| user_id       | int     |
| distance      | int     |
+---------------+---------+

id 是该表单主键。
user_id 是本次行程的用户的 id, 而该用户此次行程距离为 distance 。

写一段 SQL , 报告每个用户的旅行距离。
返回的结果表单,以 travelled_distance 降序排列 ,如果有两个或者更多的用户旅行了相同的距离, 那么再以 name 升序排列 。
查询结果格式如下例所示。

Users 表:
+------+-----------+
| id   | name      |
+------+-----------+
| 1    | Alice     |
| 2    | Bob       |
| 3    | Alex      |
| 4    | Donald    |
| 7    | Lee       |
| 13   | Jonathan  |
| 19   | Elvis     |
+------+-----------+Rides 表:
+------+----------+----------+
| id   | user_id  | distance |
+------+----------+----------+
| 1    | 1        | 120      |
| 2    | 2        | 317      |
| 3    | 3        | 222      |
| 4    | 7        | 100      |
| 5    | 13       | 312      |
| 6    | 19       | 50       |
| 7    | 7        | 120      |
| 8    | 19       | 400      |
| 9    | 7        | 230      |
+------+----------+----------+Result 表:
+----------+--------------------+
| name     | travelled_distance |
+----------+--------------------+
| Elvis    | 450                |
| Lee      | 450                |
| Bob      | 317                |
| Jonathan | 312                |
| Alex     | 222                |
| Alice    | 120                |
| Donald   | 0                  |
+----------+--------------------+

Elvis 和 Lee 旅行了 450 英里,Elvis 是排名靠前的旅行者,因为他的名字在字母表上的排序比 Lee 更小。
Bob, Jonathan, Alex 和 Alice 只有一次行程,我们只按此次行程的全部距离对他们排序。
Donald 没有任何行程, 他的旅行距离为 0。

二、解题

1.正确示范①

提交SQL

select u1.name,
ifnull(sum(distance),0) travelled_distance
from Users u1
left join Rides u2
on u1.id=u2.user_id
group by u1.id,u1.name
order by travelled_distance desc,name;

运行结果

2.正确示范②

提交SQL

select u1.name,
case when sum(distance) is null then 0 else sum(distance) end travelled_distance
from Users u1
left join Rides u2
on u1.id=u2.user_id
group by u1.id,u1.name
order by travelled_distance desc,name;

运行结果

3.正确示范③

提交SQL

select name,ifnull(travelled_distance,0) travelled_distance from(select distinct u1.id,u1.name,sum(distance) over(partition by u1.id,u1.name) travelled_distancefrom Users u1left join Rides u2on u1.id=u2.user_id
) u
order by travelled_distance desc,name;

运行结果

4.正确示范④

提交SQL

select name,
case when travelled_distance is null then 0 else  travelled_distance end travelled_distance 
from(select distinct u1.id,u1.name,sum(distance) over(partition by u1.id,u1.name) travelled_distancefrom Users u1left join Rides u2on u1.id=u2.user_id
) u
order by travelled_distance desc,name;

运行结果

5.其他


总结

正确示范①思路:
group by + sum + ifnull +order by
正确示范②思路:
group by + sum + case when +order by
正确示范③思路:
sum(xx) over(partition by xx) + distinct + ifnull + order by
正确示范④思路:
sum(xx) over(partition by xx) + distinct + case when + order by

http://www.lryc.cn/news/40268.html

相关文章:

  • 马上要面试了,还有八股文没理解?让ChatGPT来给你讲讲吧——如何更好使用ChatGPT?
  • 怎么避免服务内存溢出?
  • 01_I.MX6U芯片简介
  • 嵌入式学习笔记——STM32的中断控制体系
  • 如何发布自己的npm包
  • Qt QProcess管道命令带“|”多命令执行获取stdout输出问题总结
  • 【JavaEE进阶篇2】spring基于注解开发1
  • 统一登录验证统一返回格式统一异常处理的实现
  • 【建议收藏】华为OD面试,什么场景下会使用到kafka,消息消费中需要注意哪些问题,kafka的幂等性,联合索引等问题
  • 【MySQL】MySQL的优化(二)
  • QT VTK开发 (一、下载编译)
  • C/C++每日一练(20230314)
  • 裸辞3个月,面试了25家公司,终于找到心仪的工作了
  • 【Linux学习】进程间通信——system V(共享内存 | 消息队列 | 信号量)
  • 解决 IDA 防F5转伪C笔记
  • 【面试题】你需要知道的webpack高频面试题
  • 【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.60】损失函数改进为wiou
  • 2023年中职网络安全竞赛——数字取证调查(新版)attack解析(详细)
  • Cadence Allegro 导出Net Single Pin and No Pin报告详解
  • 蓝桥冲刺31天之317
  • 站上风口,文心一言任重道远
  • Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)
  • 百度发布文心一言,我想说几句
  • 简单了解JSP
  • Qt(c++)调用海康威视监控摄像头
  • 深度学习部署笔记(十五): CUDA_Run_Time_API_parallel_多流并行,以及多流之间互相同步等待的操作方式
  • 【Spring】spring框架简介
  • WuThreat身份安全云-TVD每日漏洞情报-2023-03-17
  • postman 调用webservice
  • 基于华为模拟器(ensp)的静态路由配置实验