SQL‑запрос для получения имени хозяина, имени питомца и разницы их возрастов

Нужен LEFT JOIN от owners к pets, COALESCE для имени владельца и CASE для age_gap. Условие нулевой разницы относится к отсутствующему имени хозяина, а не к отсутствующему питомцу.

Короткий ответ

Что ответить на собеседовании

Нужен LEFT JOIN от owners к pets, COALESCE для имени владельца и CASE для age_gap. Условие нулевой разницы относится к отсутствующему имени хозяина, а не к отсутствующему питомцу.

Подробный разбор

Ответ с пояснениями

Условие

Составьте запрос, который выводит имя владельца животного под псевдонимом keeper_name, имя самого питомца под псевдонимом animal_name и разницу между возрастом хозяина и возрастом животного как age_gap. В результат включаются все строки из таблицы owners; если имя владельца отсутствует (NULL), замените его на строку "N/A", а значение age_gap в таком случае сделайте равным 0. Сортировка должна осуществляться сначала по имени владельца в алфавитном порядке, затем по убыванию значения разницы возрастов.

owners table :

ID Name Age Pet_ID
1 Aubrey Little 20 1
2 Chett Crawfish 45 3
3 Jules Spinner 10 4
4 Magnus Burnsides 9 2
5 Veronica Dunn 8 NULL

pets table :

ID Name Age Animal
1 Dr. Harris Bonkers 1 Rabbit
2 Moon 9 Dog
3 Ripley 7 Cat
4 Tom 2 Cat
5 Maisie 10 Dog

Ответ

Нужен LEFT JOIN от owners к pets, COALESCE для имени владельца и CASE для age_gap. Условие нулевой разницы относится к отсутствующему имени хозяина, а не к отсутствующему питомцу.

Запрос сохраняет всех владельцев:

SELECT COALESCE(o.name, 'N/A') AS keeper_name,
       p.name AS animal_name,
       CASE WHEN o.name IS NULL THEN 0
            ELSE o.age - p.age END AS age_gap
FROM owners AS o
LEFT JOIN pets AS p ON p.id = o.pet_id
ORDER BY keeper_name ASC, age_gap DESC;

У Veronica питомца нет, поэтому animal_name и age_gap равны NULL: условие не требует заменять эти значения. У хозяина с NULL-именем age_gap будет 0 независимо от возраста питомца. Если нужна отдельная политика сортировки NULL, задайте её средствами выбранной СУБД.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее