0
点赞
收藏
分享

微信扫一扫

每日一题-90(排名靠前的旅行者)

E_topia 2022-02-01 阅读 100
sql

题90:

根据下面两表写一段 SQL , 报告每个用户的旅行距离。返回的结果表单,以 travelled_distance 降序排列 ,如果有两个或者更多的用户旅行了相同的距离, 那么再以 name 升序排列 。
在这里插入图片描述
其中:

  • Users表:id 是该表单主键,name 是用户名字;
  • Rides 表:id 是该表单主键,user_id 是本次行程的用户的 id, 而该用户此次行程距离为 distance 。

解题思路:
(1)利用ifnull()函数将没有旅行距离的旅行者返回为0
(2)用sum()计算旅行距离
(3)根据用户id连接两表
(4)根据user_id分组方便计算距离
(5)根据题目要求排序。

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

相关推荐

0 条评论