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


 Агрегирование и группировка



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

6.3. Агрегирование и группировка
Среди множества функций, имеющихся в PostgreSQL, важное место занимают агре-
гатные функции. С одной из них, функцией count, мы уже работали довольно много.
Давайте рассмотрим еще ряд функций из этой группы и сделаем это на примере таб-
лицы «Бронирования».
Для расчета среднего значения по столбцу используется функция avg (от слова
average).
SELECT avg( total_amount ) FROM bookings;
avg
--------------------
79025.605811528685
(1 строка)
Для получения максимального значения по столбцу используется функция max.
SELECT max( total_amount ) FROM bookings;
max
------------
1204500.00
(1 строка)
Для получения минимального значения по столбцу используется функция min.
SELECT min( total_amount ) FROM bookings;
min
---------
3400.00
(1 строка)
Мы уже много раз выполняли группировку строк в выборке при помощи предложе-
ния GROUP BY, поэтому рассмотрим только два примера.
Первый будет таким: давайте подсчитаем, сколько маршрутов предусмотрено из
Москвы в другие города. При формировании запроса не будем учитывать частоту
рейсов в неделю, т. е. независимо от того, выполняется какой-то рейс один раз в неде-
лю или семь раз, он учитывается только однократно. Воспользуемся материализо-
ванным представлением «Маршруты».
168


6.3. Агрегирование и группировка
SELECT arrival_city, count( * )
FROM routes
WHERE departure_city = 'Москва'
GROUP BY arrival_city
ORDER BY count DESC;
arrival_city
| count
--------------------------+-------
Санкт-Петербург
|
12
Брянск
|
9
Ульяновск
|
5
...
В качестве второго примера рассмотрим ситуацию, когда руководству компании
потребовалась обобщенная информация по частоте выполнения рейсов, а именно:
сколько рейсов выполняется ежедневно, сколько рейсов — шесть дней в неделю,
пять и т. д. Опять обратимся к материализованному представлению «Маршруты».
Но теперь при формировании запроса, в отличие от первого примера, воспользуемся
столбцом days_of_week, в котором содержатся массивы номеров дней недели, когда
выполняется данный рейс.


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




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

    Басты бет