Учебное пособие Санкт-Петербург «бхв-петербург»


SELECT array_length( days_of_week, 1 ) AS days_per_week



Pdf көрінісі
бет133/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   129   130   131   132   133   134   135   136   ...   256
sql osnovi yazika

SELECT array_length( days_of_week, 1 ) AS days_per_week,
count( * ) AS num_routes
FROM routes
GROUP BY days_per_week
ORDER BY 1 desc;
days_per_week | num_routes
---------------+------------
7 |
482
3 |
54
2 |
88
1 |
86
(4 строки)
В этом запросе используется функция array_length, возвращающая количество
элементов в указанном измерении массива. Поскольку массив одномерный, то вто-
рым параметром функции будет число 1 — первое измерение.
При выполнении выборок можно с помощью условий, заданных в предложении
WHERE, сузить множество выбираемых строк. Аналогичная возможность существу-
ет и при выполнении группировок: можно включить в результирующее множество
не все строки, а лишь те, которые удовлетворяют некоторому условию. Это условие
169


Глава 6. Запросы
можно задать в предложении HAVING. Важно помнить, что предложение WHERE ра-
ботает с отдельными строками еще до выполнения группировки с помощью GROUP
BY, а предложение HAVING — уже после выполнения группировки.
В качестве примера приведем такой запрос: определить, сколько существует марш-
рутов из каждого города в другие города, и вывести названия городов, из которых
в другие города существует не менее 15 маршрутов.
SELECT departure_city, count( * )
FROM routes
GROUP BY departure_city
HAVING count( * ) >= 15
ORDER BY count DESC;
departure_city | count
-----------------+-------
Москва
|
154
Санкт-Петербург |
35
Новосибирск
|
19
Екатеринбург
|
15
(4 строки)
В подавляющем большинстве городов только один аэропорт, но есть и такие города,
в которых более одного аэропорта. Давайте их выявим.


Достарыңызбен бөлісу:
1   ...   129   130   131   132   133   134   135   136   ...   256




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

    Басты бет