- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
select
x1.airport, x1.amount, x1.exempt
from
Taxes x1
where
x1.code = 'departure'
and x1.airport in (
select
xx1.airport
from
(select
yx1.airport
from
Taxes yx1
where
yx1.airport = x1.airport
and yx1.code = x1.code
group by
yx1.airport, yx1.amount, yx1.exempt
) xx1
group by xx1.airport
having count(xx1.airport) > 1
)
;
Давно я не копался в SQL. Вот что нагородил :(
Суть такова: у аэропортов есть departure tax, который может быть разный в зависимости от некоторых критериев (нерелевантно каких).
А может быть и одинаковый. Но все равно аэропорт может иметь несколько рядков в БД (с одинаковым amount). А еще может быть exempt = 'X',
что тождественно amount = 0.
Задача: выбрать все рядки с departure tax для аэропортов у которых taxamt/exempt разный в зависимости от некоторых других критериев.
Elvenfighter 10.05.2018 15:51 # 0
defecate-plusplus 11.05.2018 18:33 # +1
http://sqlfiddle.com/#!17/5ada1/1
немного подзаебался, чтобы сохранить возможность применения потенциального индекса по airport/code в подзапросе (отсюда и латерал)
defecate-plusplus 11.05.2018 18:42 # +1
надо план смотреть на твоих данных
http://sqlfiddle.com/#!17/5ada1/3
subaru 10.05.2018 22:03 # +1
roskomgovno 10.05.2018 22:10 # 0
Elvenfighter 11.05.2018 17:50 # +1
vistefan 11.05.2018 17:56 # 0
roskomgovno 11.05.2018 18:06 # +1
vistefan 11.05.2018 18:11 # +1
Просто есть вещи, которые нихуя не выразишь на query builder'ах всяких фреймворков. Всякие подзапросы. Я подозреваю, что это, конечно из-за незнания sql или конкретного билдера, но иногда на узнавание нет времени, а под рукой предательски маячит raw query.
Кстати, а как у богов?
roskomgovno 11.05.2018 18:27 # 0
Условно говоря:
do_all.sql:
"SELECT * from pitushok where kurochka> @n"
roskomgovno 11.05.2018 18:06 # +1
ps: sql developer sux
use datagrip, luke