Обложка канала

Oracle Developer👨🏻‍💻

Все о разработке в СУБД "Oracle" SQL, PL/SQL, оптимизация, архитектура, сертификации и многое другое.

Oracle Developer👨🏻‍💻

3 года назад
Открыть в
Использование алиасов в 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