Использование алиасов в Group by и Having
Друзья, всем привет!
В Oracle23c, наконец-то, сделали возможность использование алиаса в group by и having.
Это бывает полезно, когда выражение, по которому происходит группировка и фильтрация групп размашистое.
-- до 23c
select extract(year from t.hire_date) year, count(*)
from employees t
group by extract(year from t.hire_date)
having extract(year from t.hire_date) >= 2014;
-- 23с
select extract(year from t.hire_date) year, count(*)
from employees t
group by year
having year >= 2014;
Красота 🔥
Иногда на собесах спрашивают: можно ли использовать алиасы в group by?
Теперь правильный ответ: зависит от версии, до 23 - нельзя, после - можно.
А можно ли обратиться по позиции?
Да можно, но только в group by и с включением этой возможности в сесиии.
alter session set group_by_position_enabled = true;
select extract(year from t.hire_date) year, count(*)
from employees t
group by 1
having year >= 2014;
Обсудить в чатике 💬
#oracle23c
Oracle Developer