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


SELECT aa.city, aa.airport_code, aa.airport_name



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

SELECT aa.city, aa.airport_code, aa.airport_name
FROM (
SELECT city, count( * )
FROM airports
GROUP BY city
HAVING count( * ) > 1
) AS a
JOIN airports AS aa ON a.city = aa.city
ORDER BY aa.city, aa.airport_name;
182


6.4. Подзапросы
Благодаря использованию предложения HAVING, подзапрос выбирает города, в кото-
рых имеется более одного аэропорта, и формирует временную таблицу в следующем
виде:
city
| count
-----------+-------
Ульяновск |
2
Москва
|
3
(2 строки)
А в главном запросе выполняется соединение временной таблицы с таблицей «Аэро-
порты» (airports).
city
| airport_code |
airport_name
-----------+--------------+---------------------
Москва
| VKO
| Внуково
Москва
| DME
| Домодедово
Москва
| SVO
| Шереметьево
Ульяновск | ULV
| Баратаевка
Ульяновск | ULY
| Ульяновск-Восточный
(5 строк)
Для иллюстрации использования подзапросов в предложении HAVING решим та-
кую задачу: определить число маршрутов, исходящих из тех аэропортов, которые
расположены восточнее географической долготы 150

.
SELECT departure_airport, departure_city, count( * )
FROM routes
GROUP BY departure_airport, departure_city
HAVING departure_airport IN (
SELECT airport_code
FROM airports
WHERE longitude > 150
)
ORDER BY count DESC;
Подзапрос формирует список аэропортов, которые и будут отобраны с помощью
предложения HAVING после выполнения группировки.
departure_airport |
departure_city
| count
-------------------+--------------------------+-------
DYR
| Анадырь
|
4
GDX
| Магадан
|
3
PKC
| Петропавловск-Камчатский |
1
(3 строки)
183


Глава 6. Запросы
В сложных запросах могут использоваться вложенные подзапросы. Это означает,
что один подзапрос находится внутри другого. Давайте в качестве примера рассмот-
рим такую ситуацию: руководство авиакомпании хочет выяснить степень заполне-
ния самолетов на всех рейсах, ведь отправлять полупустые самолеты не очень выгод-
но. Таким образом, запрос должен не только выдавать число билетов, проданных на
данный рейс, и общее число мест в самолете, но должен также вычислять отношение
этих двух показателей.
Вот какой запрос получился:


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




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

    Басты бет