每日一题-90(排名靠前的旅行者)
作者:互联网
题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;
标签:distance,name,用户,距离,旅行者,user,90,一题,id 来源: https://blog.csdn.net/Txixi/article/details/122753575