WITH ModelCode AS (
SELECT aircraft_code
FROM aircrafts_data
WHERE model ->> 'en' = 'Boeing 777-300'
LIMIT 1
)
SELECT
SUBSTRING(s.seat_no, 1, 2) AS row,
JSON_AGG(SUBSTRING(s.seat_no, 3, 1) ORDER BY SUBSTRING(s.seat_no, 3, 1)) AS seats,
-- Предполагаем, что тип места в пределах ряда может быть разным,
-- поэтому берем первый попавшийся для отображения.
-- Если требуется более детальная информация о типах мест в ряду,
-- запрос нужно будет усложнить.
(ARRAY_AGG(DISTINCT s.fare_conditions))[1] AS fare_conditions
FROM
seats s
JOIN
ModelCode mc ON s.aircraft_code = mc.aircraft_code
GROUP BY
SUBSTRING(s.seat_no, 1, 2)
ORDER BY
row;
;
select * from query_cost('WITH ModelCode AS (
SELECT aircraft_code
FROM aircrafts_data
WHERE model ->> ''en'' = ''Boeing 777-300''
LIMIT 1
)
SELECT
SUBSTRING(s.seat_no, 1, 2) AS row,
JSON_AGG(SUBSTRING(s.seat_no, 3, 1) ORDER BY SUBSTRING(s.seat_no, 3, 1)) AS seats,
-- Предполагаем, что тип места в пределах ряда может быть разным,
-- поэтому берем первый попавшийся для отображения.
-- Если требуется более детальная информация о типах мест в ряду,
-- запрос нужно будет усложнить.
(ARRAY_AGG(DISTINCT s.fare_conditions))[1] AS fare_conditions
FROM
seats s
JOIN
ModelCode mc ON s.aircraft_code = mc.aircraft_code
GROUP BY
SUBSTRING(s.seat_no, 1, 2)
ORDER BY
row;');