Сортировка sql server. Работа с базой данных



Следующий цикл:

Шаг 8. Простая сортировка

Если результат вашего SQL запроса должен стать исходным материалом некоего отчета, то вопрос сортировки в нем данных становится чрезвычайно важным, поскольку человеку, читающему неотсортированный должным образом отчет очень сложно быстро найти в нем нужную именно ему часть информации. Для сортировки данных по колонкам результата запроса (в нашем случае - по полям таблицы) в SQL используется ключевое слово ORDER BY. Пример самой простой сортировки приведен ниже. За основу взят запрос из шага 2: “Запрос с простым критерием отбора”. Сортируем сотрудников по полю S_NAME (Ф.И.О.).

SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE

Сортировка результата SQL запроса по одному полю.

Шаг 9. Сложная сортировка

Часто и даже практически всегда необходимо отсортировать данные более чем по одной колонке и не всегда в порядке возрастания. Синтаксис SQL предполагает после ключевого слова ORDER BY список колонок, разделенных запятой, а также, способ сортировки для каждой колонки: в порядке возрастания значений - ASC или порядке их убывания - DESC. В приведенном ниже примере мы показываем записи уже обо всех сотрудниках в порядке убывания их стажа. Сотрудников с одинаковым стажем сортируем в алфавитном порядке.

SELECT S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC


Сортировка результата SQL запроса по двум полям.

Довольно часто обратный порядок сортировки используют с колонками типа [дата]. Если дата хранит, например, дату занесения информации, то при обратной сортировке в самом начале списка оказываются те записи, которые были добавлены недавно относительно остальных. В случае если запрос извлекает из базы данных анонсы новостей, то мы получаем список анонсов, отсортированных в порядке убывания их актуальности, что может быть крайне полезным, поскольку читают анонсы обычно сверху вниз, да и на новостных сайтах показывают их не все, а только несколько наиболее “свежих”.

Предложение ORDER BY в Access сортирует записи, возвращенные запросом, по возрастанию или по убыванию значений указанного поля (полей).

Синтаксис

SELECT список_полей
FROM таблица
WHERE условие_отбора
[, поле2 ][, ...]]]

Инструкция SELECT, содержащая предложение ORDER BY, включает в себя следующие элементы:

Замечания

Предложение ORDER BY не является обязательным. Его следует использовать, когда необходимо отобразить данные в отсортированном виде.

По умолчанию применяется порядок сортировки по возрастанию (от А до Я, от 0 до 9). В двух приведенных ниже примерах показана сортировка имен сотрудников по фамилиям.

SELECT LastName, FirstName
FROM Employees
ORDER BY LastName;
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName ASC;

Чтобы выполнить сортировку по убыванию (от Я до А, от 9 до 0), добавьте зарезервированное слово DESC в конце каждого поля, по которому вы хотите отсортировать записи. В примере ниже выполняется сортировка фамилий сотрудников в порядке убывания заработной платы.

SELECT LastName, Salary
FROM Employees
ORDER BY Salary DESC, LastName;

Если в предложении ORDER BY указать поле, содержащее данные типа Memo или объекты OLE, возникнет ошибка. Ядро СУБД Microsoft Access не поддерживает сортировку по полям этих типов.

Предложение ORDER BY обычно является последним элементом в инструкции SQL.

В предложение ORDER BY можно включать дополнительные поля. Сначала записи сортируются по полю, указанному в предложении ORDER BY первым. Затем для записей с одинаковыми значениями первого поля выполняется сортировка по полю, указанному вторым, и т. д.

В будущем нам может понадобиться сортировать нашу выборку - в алфавитном порядке для текста или по возрастанию/убыванию - для цифровых значений. Для таких целей в SQL есть специальный оператор ORDER BY .

1. Сортировка выбранных данных.

Давайте всю нашу таблицу посортируем по сумме реализации продукции, а именно по столбцу Amount .

SELECT * FROM Sumproduct ORDER BY Amount

Видим, что запрос посортировал записи по возрастанию в поле Amount . Обязательно нужно соблюдать последовательность расположения операторов, т.е. оператор ORDER BY должен идти в самом конце запроса. В противном случае будет получено сообщение об ошибке.

Также особенностью оператора ORDER BY является то, что он может сортировать данные по полю, которого мы не выбирали в запросе, то есть достаточно, чтобы оно вообще было в БД.

2. Сортировка по нескольким полям.

Теперь посортируем наш пример дополнительно за еще одним полем. Пусть это будет поле City , которое отображает место реализации продукции.

SELECT * FROM Sumproduct ORDER BY Amount, City

Очередность сортировки будет зависеть от порядка расположения полей в запросе. То есть, в нашем случае сначала данные будут рассортированы по колонке Amount , а затем по City .

3. Направление сортировки.

Несмотря на то, что по умолчанию оператор ORDER BY сортирует по возрастанию, мы можем также прописать сортировки значений по убыванию. Для этого в конце каждого поля проставляем оператор DESC (что является сокращением от слова DESCENDING).

SELECT * FROM Sumproduct ORDER BY Amount DESC , City

В данном примере, значение в поле Amount были посортированы по убыванию, а в поле City - по возрастанию. Оператор DESC применяется только для одного столбца, поэтому при необходимости его нужно прописывать после каждого поля, которое принимает участие в сортировке.







2024 © gtavrl.ru.