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



Pdf көрінісі
бет142/256
Дата18.11.2022
өлшемі1.88 Mb.
#465124
түріУчебное пособие
1   ...   138   139   140   141   142   143   144   145   ...   256
sql osnovi yazika

SELECT s2.model,
string_agg(
s2.fare_conditions || ' (' || s2.num || ')',
', '
)
FROM (
SELECT a.model,
s.fare_conditions,
count( * ) AS num
FROM aircrafts a
JOIN seats s ON a.aircraft_code = s.aircraft_code
GROUP BY 1, 2
ORDER BY 1, 2
) AS s2
GROUP BY s2.model
ORDER BY s2.model;
181


Глава 6. Запросы
Подзапрос формирует временную таблицу в таком виде:
model
| fare_conditions | num
---------------------+-----------------+-----
Airbus A319-100
| Business
| 20
Airbus A319-100
| Economy
| 96
...
Sukhoi SuperJet-100 | Business
| 12
Sukhoi SuperJet-100 | Economy
| 85
(17 строк)
А в главном (внешнем) запросе используется агрегатная функция string_agg для
формирования результирующего значения на основе сгруппированных строк. Эта
функция отличается от агрегатных функций avg, min, max, sum и count тем, что воз-
вращает не числовое значение, а строку символов, составленную из значений атрибу-
тов, указанных в качестве ее параметров. Эти значения берутся из сгруппированных
строк.
model
|
string_agg
---------------------+--------------------------------------------
Airbus A319-100
| Business (20), Economy (96)
Airbus A320-200
| Business (20), Economy (120)
Airbus A321-200
| Business (28), Economy (142)
Boeing 737-300
| Business (12), Economy (118)
Boeing 767-300
| Business (30), Economy (192)
Boeing 777-300
| Business (30), Comfort (48), Economy (324)
Bombardier CRJ-200 | Economy (50)
Cessna 208 Caravan | Economy (12)
Sukhoi SuperJet-100 | Business (12), Economy (85)
(9 строк)
В качестве еще одного примера использования подзапроса в предложении FROM ре-
шим такую задачу: получить перечень аэропортов в тех городах, в которых больше
одного аэропорта.


Достарыңызбен бөлісу:
1   ...   138   139   140   141   142   143   144   145   ...   256




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

    Басты бет