Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
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 разный в зависимости от некоторых других критериев.
Это хорошо читается, видно без подсветки даже в терминале, где ключевые слова, а где имена сущностей. Если говорить об эстетике, в этом есть свой стиль. Ещё некоторые подстветки (например, в моём саблайме) понимают, что строка является запросом по такому признаку, легко получается отличить от строкового литерала.
Попадается такой код на работе, но это, конечно, боже упаси.
Просто есть вещи, которые нихуя не выразишь на query builder'ах всяких фреймворков. Всякие подзапросы. Я подозреваю, что это, конечно из-за незнания sql или конкретного билдера, но иногда на узнавание нет времени, а под рукой предательски маячит raw query.
http://sqlfiddle.com/#!17/5ada1/1
немного подзаебался, чтобы сохранить возможность применения потенциального индекса по airport/code в подзапросе (отсюда и латерал)
надо план смотреть на твоих данных
http://sqlfiddle.com/#!17/5ada1/3
Просто есть вещи, которые нихуя не выразишь на query builder'ах всяких фреймворков. Всякие подзапросы. Я подозреваю, что это, конечно из-за незнания sql или конкретного билдера, но иногда на узнавание нет времени, а под рукой предательски маячит raw query.
Кстати, а как у богов?
Условно говоря:
do_all.sql:
"SELECT * from pitushok where kurochka> @n"
ps: sql developer sux
use datagrip, luke