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

【力扣白嫖日记】SQL

前言

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

今日题目:

1407.排名靠前的旅行者
表:Users

列名类型
idint
namevarchar

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

表:Rides

列名类型
idint
user_idint
distanceint

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


我那不值一提的想法:

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

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

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

也就是这样:

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

结果:

在这里插入图片描述


总结:

能运行就行。


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

相关文章:

  • 自动化报告pptx-python|高效通过PPT模版制造报告(三)
  • Linux升级openssh的解决方案
  • YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读
  • C++ pair+map+set+multimap+multiset+AVL树+红黑树(深度剖析)
  • 指针的学习1
  • c++:敲桌子
  • Linux中判断文件系统的方法
  • 聊聊ClickHouse MergeTree引擎的固定/自适应索引粒度
  • 20240202在WIN10下使用whisper.cpp
  • 【Linux】基本指令(上)
  • 【DB2】—— 一次关于db2 sqlcode -420 22018的记录
  • 账簿和明细账
  • C# Onnx GroundingDINO 开放世界目标检测
  • PyCharm / DataSpell 导入WSL2 解析器,实现GPU加速
  • Android矩阵Matrix裁切setRectToRect拉伸Bitmap替代Bitmap.createScaledBitmap缩放,Kotlin
  • TensorFlow2实战-系列教程11:RNN文本分类3
  • 故障诊断 | 一文解决,RF随机森林的故障诊断(Matlab)
  • DAO设计模式
  • 【Midjourney】新手指南:参数设置
  • 阿里云a10GPU,centos7,cuda11.2环境配置
  • RTSP/Onvif协议视频平台EasyNVR激活码授权异常该如何解决
  • React16源码: React中event事件对象的创建过程源码实现
  • 深度学习(12)--Mnist分类任务
  • AI工具【OCR 01】Java可使用的OCR工具Tess4J使用举例(身份证信息识别核心代码及信息提取方法分享)
  • 【MySQL复制】半同步复制
  • PHP面试知识点--echo、print、print_r、var_dump区别
  • centos 7 部署若依前后端分离项目
  • RFID手持终端_智能pda手持终端设备定制方案
  • 51单片机学习——矩阵按键
  • 重写Sylar基于协程的服务器(1、日志模块的架构)