Я видел выражение COUNT (1) в одном из примеров. Что значит COUNT (1) и почему именно 1?
Оператор COUNT подсчитывает количество элементов в группе, вместо элемента мы задаем единичку; таким образом, каждой строчке в группе будет соответствовать единица, количество строчек будет считаться как сумма единичек, строчек.
Как использовать группировки совместно с функциями для работы со строками и другими встроенными функциями языка SQL? Приведите несколько примеров, пожалуйста.
У нас уже был подобный пример, но для лучшего понимания посмотрим еще несколько примеров.
Группируем имена MAN по первой букве имени (FIRSTNAME); найдем, сколько имен начинаются с заданной буквы в таблице MAN.
Рисунок 98. Группировка по SUBSTR: таблица MAN
Сгруппируем названия городов по последним двум буквам и найдем сумму количества населения в каждой группе.
Рисунок 99. Группировка по SUBSTR: таблица MAN
GROUP BY можно использовать вместо DISTINCT?
Во множестве случаев GROUP BY действительно заменяет DISTINCT.
Например, вывести уникальные цвета и марки автомобилей из таблицы AUTO.
Результат одинаков при использовании GROUP BY и DISTINCT.
Рисунок 100. Запрос к AUTO: демонстрация DISTINCT
Контрольные вопросы и задания для самостоятельного выполнения
1. Найдите ошибку в запросе:
2. Выведите количество авто из AUTO, сгруппированных по марке (MARK) (то есть сколько BMW, сколько LADA…).
3. Выведите количество синих (COLOR) автомобилей в таблице AUTO.
4. Выведите максимальную и минимальную численность населения (PEOPLES) во всех городах (CITY).
5. Выведите средний возраст людей (MAN) и количество человек в группе, сгруппированных по ПЕРВОЙ БУКВЕ имени (FIRSTNAME).
Шаг 33. Сложные группировки с объединениями, сортировка результатов
Язык SQL позволяет гармонично сочетать операции группировки данных GROUP BY с операторами объединения JOIN.
Конструкция GROUP BY оперирует с результатами запроса, поэтому прекрасно работает с запросами на объединение данных JOIN.
Приведем несколько примеров.
Вывести сведения: список марок автомобиля, а также сколько людей приобрели авто указанной марки; объединить таблицы MAN и AUTO по колонке PHONENUM.
Рисунок 101. Группировка по нескольким таблицам
Вывести наименование города, код города, а также количество людей и средний возраст людей из таблицы MAN, проживающих в данном городе, объединив таблицы MAN и CITY по колонке CITYCODE.
Рисунок 102. Группировка по нескольким таблицам MAN, CITY
Сортировка результатов запросов
В этих сложных запросах можно выполнять сортировку, в том числе и по сгруппированным записям.
Вывести сведения: список марок автомобиля, а также сколько людей приобрели авто указанной марки, объединив таблицы MAN и AUTO по колонке PHONENUM, отсортировать по названию марок авто.
Рисунок 103. Группировка по таблицам AUTO, MAN
Также в подобных запросах вполне допускается сортировка по агрегатной функции.
Вывести наименование города, код города, а также количество и средний возраст людей из таблицы MAN, проживающих в данном городе. Отсортировать результаты по количеству людей, а также по суммарному возрасту людей.
Рисунок 104. Группировка по таблицам MAN, CITY
А можно ли с помощью агрегатной функции COUNT подсчитать количество уникальных элементов?
Да, для этого мы можем использовать уже знакомую нам конструкцию DISTINCT.
Предположим, что нам необходимо вывести список марок автомобиля, а также сколько людей с уникальным именем приобрели авто указанной марки, объединив таблицы MAN и AUTO по колонке PHONENUM.
Обратите внимание: мы использовали конструкцию DISTINCT MAN.FIRSTNAMEв агрегатной функции COUNT.
Рисунок 105. Группировка объединенных данных по MARK таблиц AUTO, MAN
Контрольные вопросы и задания для самостоятельного выполнения
1. Выведите марки автомобилей из таблицы AUTO и найдите количество людей, купивших одну и ту же марку авто, не проживающих в одном и том же городе.
2. Выведите названия городов и сумму возрастов, средний возраст жителей этого города из таблицы MAN, отсортируйте данные по количеству жителей из таблицы MAN в каждом из городов.
Шаг 34. HAVING как фильтр для групп и сложные группировки данных. ROWID — уникальный идентификатор строки. Дубликаты строк
Читать дальше
Конец ознакомительного отрывка
Купить книгу