Фильтрация групп

Рейтинг: -2Ответов: 1Опубликовано: 10.06.2023

Всем доброго времени суток, подскажите с задачей. Несколько суток бьюсь, но до конца не пойму как решить. Условие задачи: Выведите типы комнат (поле home_type) и разницу между самым дорогим и самым дешевым представителем данного типа. В итоговую выборку включите только те типы жилья, количество которых в таблице Rooms больше или равно 2. Для вывода разницы стоимости используйте псевдоним difference.

введите сюда описание изображения

Ответы

▲ -1Принят

Чтобы найти разность между самым дорогим и дешёвым жильём данного типа, достаточно взять разность для результатов соответствуюющих агрегирующих функций.
Для проверки количества следует применить условие HAVING COUNT(*) после группировки.

SELECT home_type, MAX(price) - MIN(price) AS difference -- вывод разницы
FROM Rooms
GROUP BY home_type
HAVING COUNT(*) > 1  -- проверка, что количество данного типа жилья от 2 и выше

онлайн демо