Description

Write a SQL query to find total distance traveled by each user. Return name and total distance, ordered by distance descending, then name ascending. **Output columns (in order):** name, total_distance

Table:users
ColumnType
idINT
nameTEXT
Table:rides
ColumnType
idINT
user_idINT
distanceINT

Examples

Input:CREATE TABLE users (id INT, name TEXT); CREATE TABLE rides (id INT, user_id INT, distance INT); INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie'); INSERT INTO rides VALUES (1, 1, 100), (2, 1, 100), (3, 2, 150);
Output:Alice|200 Bob|150 Charlie|0
Explanation:

Alice has two rides (100 + 100 = 200), Bob has one ride (150), and Charlie has no rides (0). Results ordered by distance descending.

Input:CREATE TABLE users (id INT, name TEXT); CREATE TABLE rides (id INT, user_id INT, distance INT); INSERT INTO users VALUES (1, 'David'), (2, 'Eva'), (3, 'Frank'), (4, 'Grace'); INSERT INTO rides VALUES (1, 2, 75), (2, 2, 125), (3, 4, 200), (4, 1, 50);
Output:Eva|200 Grace|200 David|50 Frank|0
Explanation:

Eva has two rides (75 + 125 = 200), Grace has one ride (200), David has one ride (50), and Frank has no rides (0). Results are ordered by distance descending (200, 200, 50, 0), then by name ascending for ties (Eva comes before Grace alphabetically).

Input:CREATE TABLE users (id INT, name TEXT); CREATE TABLE rides (id INT, user_id INT, distance INT); INSERT INTO users VALUES (1, 'John'), (2, 'Kate'), (3, 'Lisa'); INSERT INTO rides VALUES (1, 1, 300), (2, 2, 100), (3, 2, 200), (4, 1, 150);
Output:John|450 Kate|300 Lisa|0
Explanation:

John traveled 300 + 150 = 450 total distance across two rides, Kate traveled 100 + 200 = 300 total distance across two rides, and Lisa has no rides so 0 distance. Ordered by total distance descending.

Constraints

  • Include users with 0 rides

Ready to solve this problem?

Practice solo or challenge other developers in a real-time coding battle!