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