문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
Table: Users
| Column Name | Type |
|---|---|
| id | int |
| name | varchar |
id는 이 테이블에서 고유한 값을 가지는 열이다.
name은 user의 이름이다.
Table: Rides
| Column Name | Type |
|---|---|
| id | int |
| user_id | int |
| distance | int |
id는 이 테이블에서 고유한 값을 가지는 열이다.
user_id는 "distance"만큼 이동한 user의 id이다.
각 유저의 이동 거리를 보고하는 방법을 작성해라.
Input:
Users table:
| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| 3 | Alex |
| 4 | Donald |
| 7 | Lee |
| 13 | Jonathan |
| 19 | Elvis |
Rides table:
| 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 |
Output:
| name | travelled_distance |
|---|---|
| Elvis | 450 |
| Lee | 450 |
| Bob | 317 |
| Jonathan | 312 |
| Alex | 222 |
| Alice | 120 |
| Donald | 0 |
-- Write your PostgreSQL query statement below
select Users.name, sum(coalesce(Rides.distance, 0)) as travelled_distance
from Users
left join Rides on Users.id = Rides.user_id
group by users.id, users.name
order by travelled_distance DESC, users.name ASC