top-travellers sql
This commit is contained in:
parent
950abb6b37
commit
ce4608aa34
@ -4,7 +4,7 @@ import Turndown from "turndown";
|
|||||||
import * as cheerio from "cheerio";
|
import * as cheerio from "cheerio";
|
||||||
import { client, gql } from "./graphql.mjs";
|
import { client, gql } from "./graphql.mjs";
|
||||||
|
|
||||||
const langExt = { python3: "py", nodejs: "js", cpp: "cpp" };
|
const langExt = { python3: "py", nodejs: "js", cpp: "cpp", sql: "sql" };
|
||||||
|
|
||||||
const link = await question("Enter leetcode problem link: ");
|
const link = await question("Enter leetcode problem link: ");
|
||||||
const titleSlug = path.basename(new URL(link).pathname);
|
const titleSlug = path.basename(new URL(link).pathname);
|
||||||
|
78
1541_top-travellers/README.md
Normal file
78
1541_top-travellers/README.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
Table: `Users`
|
||||||
|
|
||||||
|
+---------------+---------+
|
||||||
|
| Column Name | Type |
|
||||||
|
+---------------+---------+
|
||||||
|
| id | int |
|
||||||
|
| name | varchar |
|
||||||
|
+---------------+---------+
|
||||||
|
id is the primary key for this table.
|
||||||
|
name is the name of the user.
|
||||||
|
|
||||||
|
|
||||||
|
Table: `Rides`
|
||||||
|
|
||||||
|
+---------------+---------+
|
||||||
|
| Column Name | Type |
|
||||||
|
+---------------+---------+
|
||||||
|
| id | int |
|
||||||
|
| user_id | int |
|
||||||
|
| distance | int |
|
||||||
|
+---------------+---------+
|
||||||
|
id is the primary key for this table.
|
||||||
|
user_id is the id of the user who traveled the distance "distance".
|
||||||
|
|
||||||
|
|
||||||
|
Write an SQL query to report the distance traveled by each user.
|
||||||
|
|
||||||
|
Return the result table ordered by `travelled_distance` in **descending order**, if two or more users traveled the same distance, order them by their `name` in **ascending order**.
|
||||||
|
|
||||||
|
The query result format is in the following example.
|
||||||
|
|
||||||
|
**Example 1:**
|
||||||
|
|
||||||
|
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 |
|
||||||
|
+----------+--------------------+
|
||||||
|
Explanation:
|
||||||
|
Elvis and Lee traveled 450 miles, Elvis is the top traveler as his name is alphabetically smaller than Lee.
|
||||||
|
Bob, Jonathan, Alex, and Alice have only one ride and we just order them by the total distances of the ride.
|
||||||
|
Donald did not have any rides, the distance traveled by him is 0.
|
||||||
|
|
||||||
|
https://leetcode.com/problems/top-travellers/
|
6
1541_top-travellers/sql/solution.sql
Normal file
6
1541_top-travellers/sql/solution.sql
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Write your MySQL query statement below
|
||||||
|
SELECT Users.name as name, COALESCE(SUM(distance), 0) as travelled_distance
|
||||||
|
FROM Users
|
||||||
|
LEFT JOIN Rides ON Users.id = Rides.user_id
|
||||||
|
GROUP BY Users.id
|
||||||
|
ORDER BY travelled_distance DESC, name ASC;
|
Loading…
Reference in New Issue
Block a user