Оператор BY в Oracle SQL: как управлять группировкой, сортировкой и разбиением данных

🟢 Введение

Ключевое слово BY не используется само по себе, но является обязательной частью многих SQL-конструкций:

  • ORDER BY — сортировка

  • GROUP BY — группировка данных

  • PARTITION BY — разбиение данных внутри оконных функций

  • CLUSTER BY, DISTRIBUTE BY — в некоторых расширениях (не в Oracle)

Это слово помогает SQL точно понимать, по каким столбцам производить действие.


🔤 Написание

Наиболее частые применения:

sql
ORDER BY column;
GROUP BY column;
PARTITION BY column;

🔄 Где часто используется

  • В сортировке (ORDER BY)

  • В группировке с агрегацией (GROUP BY)

  • В оконных функциях (PARTITION BY, ORDER BY)

  • В представлениях, аналитике, отчётах

  • В подзапросах, CTE и оконных функциях


🧪 10 Примеров использования BY с пояснениями

1️⃣ ORDER BY — сортировка строк

sql
SELECT first_name, salary
FROM employees
ORDER BY salary DESC;

Сортировка по убыванию зарплаты.


2️⃣ GROUP BY — группировка по отделу

sql
SELECT department_id, COUNT(*) AS emp_count
FROM employees
GROUP BY department_id;

Сколько сотрудников в каждом отделе.


3️⃣ GROUP BY с агрегатной функцией

sql
SELECT job_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY job_id;

Средняя зарплата по должностям.


4️⃣ GROUP BY с ORDER BY

sql
SELECT department_id, COUNT(*) AS total
FROM employees
GROUP BY department_id
ORDER BY total DESC;

Сортировка групп по количеству.


5️⃣ PARTITION BY в оконной функции

sql
SELECT department_id, first_name, salary,
RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank_in_dept
FROM employees;

Ранжирование сотрудников внутри каждого отдела.


6️⃣ ORDER BY и GROUP BY по разным колонкам

sql
SELECT job_id, COUNT(*) AS total
FROM employees
GROUP BY job_id
ORDER BY job_id;

Группировка по должности, сортировка по алфавиту.


7️⃣ GROUP BY с HAVING

sql
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 5000;

Показываем только отделы с высокой средней зарплатой.


8️⃣ ORDER BY с NULLS LAST

sql
SELECT first_name, commission_pct
FROM employees
ORDER BY commission_pct DESC NULLS LAST;

Сортировка с управлением позиций NULL.


9️⃣ PARTITION BY и ORDER BY вместе

sql
SELECT employee_id, department_id, salary,
SUM(salary) OVER (PARTITION BY department_id ORDER BY salary) AS running_total
FROM employees;

Нарастающая сумма зарплаты по отделу.


🔟 BY с индексом в оконной функции

sql
SELECT employee_id, salary,
NTILE(4) OVER (ORDER BY salary) AS quartile
FROM employees;

Разбиваем всех сотрудников по квартилям.


🧩 Заключение

Хотя BY не работает самостоятельно, оно жизненно важно для сортировки (ORDER BY), группировки (GROUP BY) и аналитических оконных функций (PARTITION BY).

Понимание того, как и зачем используется BY, делает вас сильнее как SQL-аналитика и разработчика.


🔜 Следующая статья:

Оператор GROUP в Oracle SQL — как группировать данные и применять агрегатные функции

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии