Order by desc: Предложение ORDER BY (Transact-SQL) — SQL Server

SQL ORDER BY DESC

В этом разделе мы описали ORDER BY DESC с подробным примером.

Оператор ORDER BY DESC используется для сортировки данных в результирующем наборе в порядке убывания. Оператор ORDER BY DESC используется в операторе SELECT.

Синтаксис —
 SELECT столбец1, столбец2, …, столбецN
ОТ имя_таблицы
[ ГДЕ состояние ]
ORDER BY имя_столбца DESC;
 
  • столбец1, столбец2, …, столбецN — указывает имена столбцов из таблицы.
  • имя_таблицы — указывает имя таблицы.
  • имя_столбца — указывает столбец, используемый для выполнения операции ORDER BY DESC.

Пример —

Давайте рассмотрим приведенные ниже таблицы в качестве примера таблицы (таблиц) для создания SQL-запроса для получения желаемых результатов.

employee_details —
emp_id emp_name обозначение manager_id date_of_hire зарплата dept_id
001 Сотрудник1 Директор 11. 07.2019 45000,00 1000
002 Сотрудник2 Директор 11.07.2019 40000,00 2000
003 Сотрудник3 Менеджер Сотрудник1 11.07.2019 27000.00 1000
004 Сотрудник4 Менеджер Сотрудник2 08.10.2019 25000,00 2000
005 Сотрудник5 Аналитик Сотрудник3 11.07.2019 20000,00 1000
006 Сотрудник6 Аналитик Сотрудник3 08.10.2019 18000.00 1000
007 Сотрудник7 Клерк Сотрудник3 11.07.2019 15000,00 1000
008 Сотрудник8 Продавец Сотрудник4 09. 09.2019 14000.00 2000
009 Сотрудник9 Продавец Сотрудник4 08.10.2019 13000.00 2000

Сценарий — выборка строк в порядке убывания одного столбца.

Требование — Получить emp_name, manager_id всех сотрудников из таблицы employee_details в порядке убывания manager_id. Запрос был такой —

 ВЫБРАТЬ emp_name, manager_id ИЗ employee_details ЗАКАЗАТЬ ПО
manager_id DESC;
 

Выполнив вышеуказанный запрос, мы можем получить результаты, как показано ниже —

emp_name manager_id
Сотрудник9 Сотрудник4
Сотрудник8 Сотрудник4
Сотрудник7 Сотрудник3
Сотрудник6 Сотрудник3
Сотрудник5 Сотрудник3
Сотрудник4 Сотрудник2
Сотрудник3 Сотрудник1
Сотрудник2
Сотрудник1

Сценарий — выборка строк путем сортировки нескольких строк в порядке убывания.

Требование — Получить все сведения о сотрудниках, чей dept_id равен 2000 и в порядке убывания date_of_hire, зарплаты. Запрос был следующим —

 SELECT * FROM employee_details
ГДЕ dept_id = 2000 ЗАКАЗ ПО зарплате DESC, дате_найма DESC;
 

Выполнив вышеуказанный запрос, мы можем получить результаты, как показано ниже —

emp_id emp_name обозначение manager_id date_of_hire оклад dept_id
002 Сотрудник2 Директор 11.07.2019 40000,00 2000
004 Сотрудник4 Менеджер Сотрудник2 08.10.2019 25000,00 2000
008 Сотрудник8 Продавец Сотрудник4 09.09.2019 14000.00 2000
009 Сотрудник9 Продавец Сотрудник4 08. 10.2019 13000.00 2000

Сценарий — выборка строк в порядке возрастания одного столбца и в порядке убывания другого столбца.

Требование – Получить emp_name, manager_id, назначение всех сотрудников из таблицы employee_details в порядке возрастания manager_id и убывания назначения. Запрос был такой —

 ВЫБЕРИТЕ emp_name, manager_id, назначение ИЗ employee_details
 ORDER BY manager_id, обозначение DESC;
 

Выполнив вышеуказанный запрос, мы можем получить результаты, как показано ниже —

emp_name manager_id обозначение
Сотрудник8 Сотрудник4 Продавец
Сотрудник9 Сотрудник4 Продавец
Сотрудник5 Сотрудник3 Аналитик
Сотрудник6 Сотрудник3 Аналитик
Сотрудник7 Сотрудник3 Клерк
Сотрудник4 Сотрудник2 Менеджер
Сотрудник3 Сотрудник1 Менеджер
Сотрудник1 Директор
Сотрудник2 Директор

Использование предложений WHERE и ORDER BY в SQL

При выполнении запроса SELECT без каких-либо параметров сортировки сервер SQL возвращает записи в произвольном порядке.

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

Сортировка записей

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

Например, предположим, что вы хотите получить список своих клиентов, и вам нужен список в алфавитном порядке по штатам. Ниже приведен ваш текущий список клиентов.

идентификатор клиента

Имя

Фамилия

Город

Состояние

321

Фрэнк

Лоэ

Даллас

ТХ

455

Эд

Томпсон

Атланта

Г. А.

456

Эд

Томпсон

Атланта

Г.А.

457

Джо

Смит

Майами

FL

458

Фрэнк

Доу

Даллас

ТХ

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

SELECT * FROM Customer

ORDER BY State 

В приведенном выше выражении ваши данные возвращаются и сортируются в алфавитном порядке по штатам. Данные сортируются в порядке возрастания. Восходящий порядок установлен по умолчанию, но вы также можете добавить ключевое слово «ASC» в свое заявление. Следующая инструкция SQL аналогична приведенной выше инструкции.

SELECT * FROM Customer

ORDER BY State ASC 

Обратите внимание, что разница заключается в ASC, поскольку он подразумевается, когда вы исключаете его из операторов SQL.

Ваши данные по-прежнему хранятся без сортировки, но оператор SELECT показывает вам следующий набор данных.

идентификатор клиента

Имя

Фамилия

Город

Состояние

457

Джо

Смит

Майами

FL

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г. А.

321

Фрэнк

Лоэ

Даллас

ТХ

458

Фрэнк

Доу

Даллас

ТХ

Вы также можете перечислить данные в порядке убывания. Ключевое слово DESC или DESCENDING перечисляет данные в порядке убывания. Взяв тот же набор данных, который вы использовали для отчета о заказе ASC, давайте поменяем местами клиентов. Следующий код показывает, как вы пишете оператор DESC SQL.

SELECT * FROM Customer

ORDER BY State DESC

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

Следующая инструкция SQL является примером.

ВЫБЕРИТЕ * ОТ Заказчика

ORDER BY State DESC, Last_name ASC

Фраза ASC используется в приведенном выше заявлении для ясности. Когда вы читаете заявление, вы знаете, что ваш набор записей упорядочен в порядке убывания, а затем упорядочен в порядке возрастания по фамилии. Ваш набор данных превращается в следующее.

идентификатор клиента

Имя

Фамилия

Город

Состояние

457

Джо

Смит

Майами

FL

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г. А.

458

Фрэнк

Доу

Даллас

ТХ

321

Фрэнк

Лоэ

Даллас

ТХ

Запись уведомления номер 321 и 458 поменялись местами, потому что фамилии были отсортированы по состоянию.

Фильтрация записей и WHERE

Мы использовали предложение WHERE несколько раз, чтобы показать вам, как фильтровать записи при использовании операторов SELECT, UPDATE и DELETE. Вы можете использовать предложение WHERE с оператором ORDER BY или без него. Вы можете фильтровать записи по конечным значениям, значениям сравнения или с помощью операторов sub-SELECT. Предложение WHERE дает вам несколько вариантов фильтрации данных.

Мы использовали несколько примеров со знаком равенства (=). Вы также можете использовать сравнения. Например, вам может понадобиться получить список клиентов с идентификаторами от 300 до 400. Эти значения отображаются в следующей инструкции SQL.

SELECT * FROM Customer

WHERE CustomerId >=200 AND CustomerId <= 300

ORDER BY State 

Обратите внимание, что используются фразы >= и <=. Знак равенства включает значения, находящиеся справа от них. Другими словами, в поиск включены 200 и 300. В этом примере таблицы Customer нет ни 200, ни 300, поэтому эти значения не возвращаются. Обратите внимание, что синтаксис также включает в себя «И» в операторе SQL. Ключевое слово AND включает фильтр из следующего оператора SQL, в данном случае это «Клиент <= 300». Когда вы используете ключевое слово AND, вы указываете оператору SQL фильтровать записи с обоими параметрами.

Приведенный выше оператор SELECT возвращает следующий набор данных.

идентификатор клиента

Имя

Фамилия

Город

Состояние

321

Фрэнк

Лоэ

Даллас

ТХ

В нашем примере таблица Customer имеет только одну запись в заданном диапазоне.

В предложении WHERE можно использовать фразу ИЛИ вместо фразы И. В следующем операторе И заменяется на ИЛИ.

SELECT * FROM Customer

WHERE CustomerId >=200 ИЛИ CustomerId <= 300

ORDER BY State

В приведенном выше заявлении говорится: «вернуть всех клиентов с идентификатором больше 200 или идентификатором меньше 300». Приведенный выше оператор SELECT возвращает следующие результаты.

идентификатор клиента

Имя

Фамилия

Город

Состояние

457

Джо

Смит

Майами

FL

455

Эд

Томпсон

Атланта

Г.А.

456

Эд

Томпсон

Атланта

Г. А.

321

Фрэнк

Лоэ

Даллас

ТХ

458

Фрэнк

Доу

Даллас

ТХ

Обратите внимание, что все записи были возвращены. Чтобы понять, почему возвращаются все записи, вы должны разбить предложение WHERE на части. Первая часть — «CustomerId >=200». Все ваши записи имеют идентификатор выше 200, поэтому первая часть вашего предложения WHERE возвращает все записи.

Следующей частью является оператор ИЛИ, который является важным отличием от оператора И. Оператор OR говорит сохранить исходный набор данных, но также вернуть клиентов с идентификатором меньше 300. У вас нет клиентов с идентификатором меньше 300, поэтому вторая часть не возвращает записей. Трудная для понимания часть этого оператора SQL заключается в том, почему первый оператор с И возвращает 1 запись, а второй возвращает все записи. Оператор AND говорит, что вторая часть вашего предложения WHERE также должна применяться, поэтому ваши записи должны отвечать true для обоих условий. Второй оператор SQL возвращает записи, которые возвращают истину для или первое условие или второе условие. Логика этих двух утверждений совершенно разная. Поскольку все ваши записи соответствуют первому условию, оператор OR позволяет этим записям проходить и отображаться в результатах.

Оператор IN использовался в предыдущих главах, но вы также можете указать значения, которые хотите вернуть в своем операторе IN. В предыдущих главах использовался запрос sub-SELECT. Вы также можете использовать IN для указания таких значений, как состояние, которое вы хотите вернуть. Следующая инструкция SQL является примером.

SELECT * FROM Customer

WHERE State IN (‘tx,’ ‘fl’) 

Фраза IN упрощает чтение кода SQL вместо использования оператора ИЛИ. В приведенном выше заявлении говорится: «получить всех клиентов, состояние которых равно TX ИЛИ FL. В следующей таблице приведены ваши результаты. 

идентификатор клиента

Имя

Фамилия

Город

Состояние

321

Фрэнк

Лоэ

Даллас

ТХ

457

Джо

Смит

Майами

FL

458

Фрэнк

Доу

Даллас

ТХ

Сложность предложения WHERE возрастает по мере того, как вы используете больше условий.

Даты обычно используются в операторах SQL. Пример таблицы не содержит дат, но представьте, что в таблице есть столбец даты с именем «SignupDate». В столбце SignupDate указано, когда клиент зарегистрировался на вашем веб-сайте. Затем вы можете запускать отчеты на основе даты, когда клиент зарегистрировался на вашем сайте. Следующий код является примером.

SELECT * FROM Customer

WHERE SignupDate МЕЖДУ «1/1/2014» И «31/12/2014»

ORDER BY State 

Вышеупомянутая инструкция SQL получает записи, которые имеют дату между первым днем ​​года в 2014 и последний день года. Со значениями даты SQL включает даты, перечисленные в параметрах. Приведенное выше утверждение также можно записать следующим образом.

SELECT * FROM Customer

WHERE SignupDate >= ‘1/1/2014’ AND SignupDate <= ‘31/12/2014’

ORDER BY State

Предложение WHERE позволяет использовать оператор LIKE. Вы используете оператор LIKE, когда вам нужен список клиентов на основе части значений. Например, предположим, что у вас есть несколько клиентов в Далласе, но у вас также есть клиенты в городах, название которых начинается с «Да», и вам необходимо их увидеть.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *