Учебно-практическое пособие москва 2017 ббк


SELECT 'Вторник' AS day_of_week, count( * ) AS num_flights



Pdf көрінісі
бет149/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   145   146   147   148   149   150   151   152   ...   243
Байланысты:
Язык SQL. Базовый курс

SELECT 'Вторник' AS day_of_week, count( * ) AS num_flights
FROM routes
WHERE departure_city = 'Москва'
AND days_of_week @> '{ 2 }'::integer[];
day_of_week | num_flights
-------------+-------------
Вторник
|
134
(1 строка)
Нужно выполнить еще пять аналогичных команд, чтобы получить результаты
для всех дней недели. Очевидно, что это нерациональный способ.
Получить требуемый результат можно с помощью одного запроса:
SELECT unnest( days_of_week ) AS day_of_week,
count( * ) AS num_flights
FROM routes
WHERE departure_city = 'Москва'
GROUP BY day_of_week
ORDER BY day_of_week;
day_of_week | num_flights
-------------+-------------
1 |
131
2 |
134
3 |
126
4 |
136
5 |
124
6 |
133
7 |
124
(7 строк)
152


Задание 1.
Самостоятельно разберитесь, как работает приведенный запрос.
Выясните, что делает функция unnest. Для того чтобы найти ее описание, можно
воспользоваться теми разделами документации, которые были указаны в тек-
сте главы 4. Однако можно воспользоваться и предметным указателем (Index),
ссылка на который находится в самом низу оглавления документации.
В качестве вспомогательного запроса, проясняющего работу функции unnest,
можно выполнить следующий:
SELECT flight_no, unnest( days_of_week ) AS day_of_week
FROM routes
WHERE departure_city = 'Москва'
ORDER BY flight_no;
Задание 2.
Использование номеров дней недели в предыдущей выборке не
должно вызывать затруднений. Но все-таки предположим, что нас попросили
модифицировать запрос, чтобы результат выводился в таком виде:
name_of_day | num_flights
-------------+-------------
Пн.
|
131
Вт.
|
134
Ср.
|
126
Чт.
|
136
Пт.
|
124
Сб.
|
133
Вс.
|
124
(7 строк)
Покажем одно из возможных решений задачи. Оно основано на использова-
нии специальной табличной функции unnest в предложении FROM. Подробно
об этом написано в документации в разделе 7.2.1.4 «Табличные функции». Функ-
ция unnest может принимать любое число параметров-массивов, а возвращает
набор строк, которые могут использоваться в запросах, как обычные таблицы.
В этих наборах строк столбцы формируются из значений, содержащихся в мас-
сивах.


Достарыңызбен бөлісу:
1   ...   145   146   147   148   149   150   151   152   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет