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


WITH RECURSIVE ranges ( min_sum, max_sum ) AS



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

WITH RECURSIVE ranges ( min_sum, max_sum ) AS
( VALUES( 0, 100000 )
UNION ALL
SELECT min_sum + 100000, max_sum + 100000
FROM ranges
WHERE max_sum <
( SELECT max( total_amount ) FROM bookings )
)
SELECT r.min_sum, r.max_sum, count( b.* )
FROM bookings b
RIGHT OUTER JOIN ranges r
ON b.total_amount >= r.min_sum
AND b.total_amount < r.max_sum
GROUP BY r.min_sum, r.max_sum
ORDER BY r.min_sum;
157


Как вы думаете, почему функция count получает в качестве параметра выраже-
ние «b.*», а не просто «*»? Что изменится, если оставить только «*», и почему?
21. В тексте главы был приведен запрос, выводящий список городов, в которые нет
рейсов из Москвы.
SELECT DISTINCT a.city
FROM airports a
WHERE NOT EXISTS (
SELECT * FROM routes r
WHERE r.departure_city = 'Москва'
AND r.arrival_city = a.city
)
AND a.city <> 'Москва'
ORDER BY city;
Можно предложить другой вариант, в котором используется одна из операций
над множествами строк: объединение, пересечение или разность. Вместо зна-
ка «?» поставьте в запросе нужное ключевое слово — UNION, INTERSECT или
EXCEPT — и обоснуйте ваше решение.
SELECT city
FROM airports
WHERE city <> 'Москва'
?
SELECT arrival_city
FROM routes
WHERE departure_city = 'Москва'
ORDER BY city;
22. В тексте главы мы рассматривали такой запрос: получить перечень аэропортов
в тех городах, в которых больше одного аэропорта.
SELECT aa.city, aa.airport_code, aa.airport_name
FROM (
SELECT city, count( * )


Достарыңызбен бөлісу:
1   ...   149   150   151   152   153   154   155   156   ...   243




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

    Басты бет