Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Подскажите начинающему  [new]
dimvolkov
Member

Откуда:
Сообщений: 1
Добрый день! подскажите, пожалуйста, как решить задачку..
Сделал, вот такой запрос... как теперь отфильтровать результат таким образом чтобы вывести только те аэропорты, в которых есть стоимость Бизнеса меньше, чем Эконома?


select f.arrival_airport, ad.airport_name ->> 'ru' as "name",
row_number () over (partition by f.arrival_airport order by tf.amount asc), tf.fare_conditions, tf.amount
from ticket_flights tf
join flights f
using (flight_id)
join airports_data ad on f.arrival_airport = ad.airport_code
group by f.arrival_airport, tf.fare_conditions, tf.amount, ad.airport_name

К сообщению приложен файл. Размер - 113Kb
24 янв 20, 13:02    [22065949]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите начинающему  [new]
Синий Слон
Member

Откуда:
Сообщений: 248
Как пробовали?

Что не получилось?
24 янв 20, 13:13    [22065958]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите начинающему  [new]
entrypoint
Member

Откуда:
Сообщений: 227
dimvolkov,

WITH a AS 
(
	SELECT 'ABA' AS arrival_airport, 'АБАКАН' AS "name", 'Business' AS fare_condidtion, 15.00 AS Amount UNION ALL 
	SELECT 'ABA' AS arrival_airport, 'АБАКАН' AS "name", 'Economy' AS fare_condidtion, 11.00 AS Amount UNION ALL 
	SELECT 'ABA' AS arrival_airport, 'АБАКАН' AS "name", 'Economy' AS fare_condidtion, 12.00 AS Amount UNION ALL 
	SELECT 'ABA' AS arrival_airport, 'АБАКАН' AS "name", 'Economy' AS fare_condidtion, 13.00 AS Amount UNION ALL
	SELECT 'AER' AS arrival_airport, 'СОЧИ' AS "name", 'Economy' AS fare_condidtion, 10.00 AS Amount UNION ALL 
	SELECT 'AER' AS arrival_airport, 'СОЧИ' AS "name", 'Economy' AS fare_condidtion, 11.00 AS Amount UNION ALL 
	SELECT 'AER' AS arrival_airport, 'СОЧИ' AS "name", 'Business' AS fare_condidtion, 12.00 AS Amount UNION ALL 
	SELECT 'AER' AS arrival_airport, 'СОЧИ' AS "name", 'Economy' AS fare_condidtion, 13.00 AS Amount
) 
SELECT 
	arrival_airport 
FROM 
	a
GROUP BY arrival_airport
HAVING 
	MIN(Amount) FILTER (WHERE fare_condidtion = 'Business') < 
	MAX(Amount) FILTER (WHERE fare_condidtion = 'Economy'); 


Сообщение было отредактировано: 24 янв 20, 13:48
24 янв 20, 13:45    [22065999]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить