https://leetcode.com/problems/top-travellers/description/ Easy

Условие

Даны две таблицы:

Table: Users

column type описание
id int идентификатор пользователя
name varchar имя пользователя

id — первичный ключ.

Table: Rides

column type описание
id int идентификатор поездки
user_id int идентификатор пользователя (FK → Users.id)
distance int пройденное расстояние

id — первичный ключ.

Напишите SQL-запрос, который для каждого пользователя возвращает его name и общее пройденное расстояние travelled_distance. Если пользователь не совершал поездок, вернуть 0. Результат упорядочить по travelled_distance по убыванию, а при равных значениях — по name по возрастанию.

Решение

SELECT
  u.name,
  IFNULL(SUM(r.distance), 0) AS travelled_distance
FROM Users AS u
LEFT JOIN Rides AS r
  ON u.id = r.user_id
GROUP BY
  u.id,
  u.name
ORDER BY
  travelled_distance DESC,
  u.name ASC;