Сортировка строк (визуальные инструменты для баз данных)
Строки в результатах запроса можно сортировать. То есть можно указать конкретный столбец или набор столбцов, значениями которых определяется порядок строк в результирующем наборе.
Порядок сортировки частично определяется параметрами сортировки столбца. Очередность использования параметров сортировки можно изменить в диалоговом окне Параметры сортировки.
Существует несколько способов сортировки результатов запроса:
-
Можно упорядочивать строки по возрастанию или по убыванию. По умолчанию SQL использует столбцы, по которым ведется упорядочение, для расположения строк в возрастающем порядке. Например, чтобы упорядочить наименования книг в порядке возрастания цен, достаточно отсортировать строки по столбцу цен. Конечный код SQL может выглядеть следующим образом:
SELECT * FROM titles ORDER BY price
С другой стороны, если нужно сортировать названия книг так, чтобы в начале списка были расположены самые дорогие, можно явно указать порядок, в котором первым располагается элемент с самым высоким значением. То есть указать, что строки результата должны быть упорядочены по убыванию значений в столбце цен. Конечный код SQL может выглядеть следующим образом:
SELECT * FROM titles ORDER BY price DESC
SELECT * FROM authors ORDER BY state, city
SELECT title_id, title FROM titles ORDER BY price DESC
SELECT title, price * royalty / 100 as royalty_per_unit FROM titles ORDER BY royalty_per_unit DESC
SELECT city, state, COUNT(*) FROM authors GROUP BY city, state ORDER BY COUNT(*) DESC, state
SELECT title FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id WHERE au_fname = 'Jaime' AND au_lname = 'Patiño' ORDER BY title COLLATE SQL_Spanish_Pref_CP1_CI_AS
Сортировка по нескольким полям (ORDER BY)
Требуется сортировать строки таблицы EMP сначала по стобцу DEPTNO по возрастанию, а затем по заработным платам по убыванию.
Решение
В операторе ORDER BY через запятую перечислите столбцы, по которым должна проводиться сортировка:
select e.empno, e.deptno, e.sal, e.ename, e.job from emp e order by e.deptno, e.sal desc;
EMPNO DEPTNO SAL ENAME JOB ----- ------ --- ---------- ---------- 7839 10 5000 KING PRESIDENT 7782 10 2450 CLARK MANAGER 7934 10 1300 MILLER CLERK 7788 20 3000 SCOTT ANALYST 7902 20 3000 FORD ANALYST 7566 20 2975 JONES MANAGER 7876 20 1100 ADAMS CLERK 7369 20 800 SMITH CLERK 7698 30 2850 BLAKE MANAGER 7499 30 1600 ALLEN SALESMAN 7844 30 1500 TURNER SALESMAN 7654 30 1250 MARTIN SALESMAN 7521 30 1250 WARD SALESMAN 7900 30 950 JAMES CLERK 14 rows selected
Обсуждение
Старшинство столбцов, по которым осуществляется сортировка, в операторе ORDER BY определяется слева направо. Если столбце задается его порябковым номером в списке оператора SELECT, то это число не должно превышать количества элементов в списке SELECT. Можно проводить сортировку по столбцу, не входящему в список SELECT, но для этого необходимо явно указать его имя. Тем не менее, при использовании в запросе операторов GROUP BY или DISTINCT сортировка может осуществляться только по столбцам из списка оператора SELECT.
Tags: Сортировка по нескольким полям (ORDER BY)
PL/SQL
tags: Администрирование Oracle DataBase || SQL & PL/SQL
Исходные коды проекта хранятся на github. Можете заводить Issue и Discussions, при необходимости.
Чтобы задать вопрос, добавить свои знания, исправить ошибки и неточности, пишите в телеграм чате.
Как сортировать в sql
Оператор ORDER BY сортируют значения по одному или нескольких столбцам. Например, упорядочим выборку из таблицы Products по столбцу Price:
SELECT * FROM Products ORDER BY Price;
Также можно производить упорядочивание данных по псевдониму столбца, который определяется с помощью оператора AS:
SELECT ProductName, ProductCount * Price AS TotalSum FROM Products ORDER BY TotalSum;

В качестве критерия сортировки также можно использовать сложно выражение на основе столбцов:
SELECT ProductName, Price, ProductCount FROM Products ORDER BY ProductCount * Price;
Сортировка по убыванию
По умолчанию данные сортируются по возрастанию, однако с помощью оператора DESC можно задать сортировку по убыванию.
SELECT ProductName, ProductCount FROM Products ORDER BY ProductCount DESC;

По умолчанию вместо DESC используется оператор ASC , который сортирует по возрастанию:
SELECT ProductName, ProductCount FROM Products ORDER BY ProductCount ASC;
Сотировка по нескольким столбцам
При сортировке сразу по нескольким столбцам все эти столбцы указываются через запятую после оператора ORDER BY :
SELECT ProductName, Price, Manufacturer FROM Products ORDER BY Manufacturer, ProductName;
Здесь строки сначала сортируются по столбцу Manufacturer по возрастанию. Затем если есть две строки, в которых столбец Manufacturer имеет одинаковое значение, то они сортируются по столбцу ProductName также по возрастанию. Но опять же с помощью ASC и DESC можно отдельно для разных столбцов определить сортировку по возрастанию и убыванию:
SELECT ProductName, Price, Manufacturer FROM Products ORDER BY Manufacturer ASC, ProductName DESC;
Сортировка столбцов
Диалоговое окно Сортировка столбцов позволяет сортировать сетки в мониторе репликации по значению одного или нескольких столбцов. (Отсортировать по одному столбцу можно, щелкнув его заголовок в сетке монитора репликации). Например, чтобы отсортировать подписки на вкладке Все подписки по состоянию, а затем по типу соединения, выполните следующие действия.
- В первой строке сетки выберите Состояние в столбце Имя столбца и значение в столбце Порядок сортировки .
- Во второй строке сетки выберите Тип соединения в столбце Имя столбца и значение в столбце Порядок сортировки .
Параметры
Имя столбца
Имя столбца, по которому нужно выполнить сортировку. Можно выполнить сортировку по одному или нескольким столбцам. Нельзя выполнить сортировку по столбцам Текущая средняя производительность и Худшая производительность в данный момент на вкладке Публикации из-за способа вычисления значений в этих столбцах.
Порядок сортировки
Укажите значение По возрастанию или По убыванию.
Очистить все
Удалите все строки из сетки сортировки. Для удаления одной строки выделите строку и нажмите клавишу «DELETE».
