Группировка. Часть 2
Часть раздела Основы путешествия по SQL на Coddy. Урок 37 из 72.
Ключевое слово WHERE выполняет условие для каждой записи отдельно. Например:
SELECT * FROM table1
WHERE col1 > col2Условие col1 > col2 будет выполняться для каждой записи и проверять, соблюдается ли оно.
Но что, если мы хотим фильтровать агрегированные результаты? Например:
SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY categoryЭто не сработает, потому что WHERE не может проверять агрегатные значения. Для этого у нас есть ключевое слово HAVING. Оно фильтрует данные по условию агрегации.
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40Это отфильтрует все категории, для которых средняя цена превышает 40.
Если мы хотим объединить предложения HAVING и WHERE, мы напишем:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40Сначала это пройдёт по каждой записи и отфильтрует все записи, для которых цена больше 25, и только после этого выполнит предложение GROUP BY и отфильтрует каждую категорию, для которой средняя цена больше 40.
Задание
СреднеДоступные таблицы и столбцы:
earthquakes:location,amplitude,period
Шкала Рихтера — это логарифмическая шкала, используемая для измерения магнитуды землетрясений.
Нам нужно вернуть среднюю магнитуду для каждого местоположения всех крупных землетрясений.
Крупное землетрясение определяется следующим образом:
- Амплитуда больше или равна 1
- Период волн больше или равен 1 минуте
В этом задании мы будем использовать другую формулу: M = (A/T)<sup>2</sup> / T, которая эквивалентна M = ((A/T)*(A/T)) / T.
Верните местоположение и среднюю магнитуду для каждого местоположения, учитывая только крупные землетрясения (назовите столбец avg_magnitude). Включите в результат только те местоположения, где значение avg_magnitude больше 1.
Округлите результаты до 2 знаков после запятой.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцовПотренируйтесь самостоятельно: Песочница SQL