Как сделать сортировку в sql
Перейти к содержимому

Как сделать сортировку в sql

  • автор:

Оператор ORDER BY в SQL

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

Здесь мы выбираем всех клиентов, а затем сортируем их в порядке возрастания по имени (first_name).

ORDER BY ASC в SQL

Мы можем явно использовать ключевое слово ASC для сортировки выбранных записей в порядке возрастания. Например:

Здесь мы выбираем всех клиентов, а затем сортируем их в порядке возрастания возраста (age).

Примечание: Оператор ORDER BY по умолчанию выполняет сортировку данных в порядке возрастания; нет необходимости явно указывать ASC .

ORDER BY DESC в SQL

Ключевое слово DESC используется для сортировки выбранных записей в порядке убывания. Например:

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

ORDER BY с несколькими столбцами

Мы также можем использовать оператор ORDER BY с несколькими столбцами. Например:

Здесь мы выбираем все записи, а затем сортируем их по имени (first_name). Если имена повторяются, то записи сортируем уже по возрасту (age).

ORDER BY с оператором WHERE

Мы также можем использовать оператор ORDER BY с командой SELECT WHERE. Например:

Здесь мы выбираем поля last_name и age из таблицы Customers, в которых в поле country указано НЕ Великобритания (UK). Затем выбранные записи сортируются в порядке убывания по полю last_name.

Примечание: Оператор WHERE должен находиться перед оператором ORDER BY в случае их совместного использования.

Сортировка данных в SQL (ORDER BY)

При выборке данных бывает важно получить их в определенном упорядоченном виде. Сортировка может быть выполнена по любым полям с любым типом данных. Это может быть сортировка по возрастанию или убыванию для числовых полей. Для символьных (текстовых) полей это может быть сортировка в алфавитном порядке, хотя по сути, она так же является сортировкой по возрастанию или убыванию. Она так же может быть выполнена в любых направлениях – от А, до Я, и наоборот от Я, до А.

Суть процесса сортировки заключается к приведению последовательности к определенному порядку. Подробней о сортировки можно узнать в статье «Алгоритмы сортировки». Например, сортировка произвольной числовой последовательности по возрастанию:

должна привести к упорядоченной последовательности:

Аналогично, при сортировке по возрастанию строковых значений:

Иванов Иван, Петров Петр, Иванов Андрей

результат должен быть:

Иванов Андрей, Иванов Иван, Петров Петр

Здесь строка «Иванов Андрей» перешла в начало, так как сравнение строк производится посимвольно. Обе строки начинаются одинаковых символов «Иванов «. Так как символ «А» в слове «Андрей» идет раньше в алфавите, чем символ «И» в слове «Иван», то эта строка будет поставлена раньше.

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

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

Для примеров используем таблицу товаров goods:

num
(номер товара)
title
(название)
price
(цена)
1 Мандарин 50
2 Арбуз 120
3 Ананас 80
4 Банан 40

Данные здесь уже упорядочены по столбцу «num». Теперь, построим запрос, который выведет таблицу с товарами, упорядоченными в алфавитном порядке:

SELECT * FROM goods – указывает выбрать все поля из таблицы goods;

ORDER BY – команда сортировки;

title – столбец, по которому будет выполняться сортировка.

Результат выполнения такого запроса следующий:

num title price
3 Ананас 80
2 Арбуз 120
4 Банан 40
1 Мандарин 50

Так же можно выполнить сортировку для любого из полей таблицы.

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

По умолчанию, команда ORDER BY выполняет сортировку по возрастанию. Чтобы управлять направлением сортировки вручную, после имени столбца указывается ключевое слово ASC (по возрастанию) или DESC (по убыванию). Таким образом, чтобы вывести нашу таблицу в порядке убывания цен, нужно задать запрос так:

Сортировка по возрастанию цены будет:

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

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

column1 column2 column3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

Отсортируем таблицу по следующим правилам:

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

column1 column2 column3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

Порядок команды ORDER BY в запросе

Сортировка строк чаще всего проводится вместе с условием на выборку данных. Команда ORDER BY ставится после условия выборки WHERE. Например, выбираем товары с ценой меньше 100 рублей, упорядочив по названию в алфавитном порядке:

How to Use the SQL ORDER BY Clause

365 Data Science

If you want to refine your output when coding, the SQL ORDER BY clause is an awesome way to go about it. However, in order to fully understand how to work with it, you should check out what operators we will be using first.

Let’s see what happens when we retrieve all records from the “ employees” table. As shown in the picture below, the list we get is automatically ordered based on employee numbers.

Assume your boss has just asked you to order the people by first name, instead of by employee number. So, how can you do that?

When to Use the SQL ORDER BY clause

Adding “ ORDER BY first name” at the end of this query will provide the desired outcome.

As you can see in the picture above, the entire list was reorganized in alphabetical order, according to the field containing employee names.

Specifying the Order

One of two specific reserved words can be attached at the end of the ORDER BY clause.

Ascending Order

The first one is ASC, abbreviated from “ascending”, requiring the output to be sorted by the values in the designated field in ascending order. If this keyword is not attached to the statement at the end, SQL will implicitly understand you want things ordered precisely in ascending order anyway.

Therefore, if we add ASC at the end and re-run the query, we will obtain the same output.

Descending Order

The alternative is to use DESC, which is abbreviated from “descending”. Hence, if you would like your results plotted in reverse order, DESC is the keyword to add at the end of the ORDER BY clause.

Let’s check if this places the names starting with Z first.

Working with Numbers

Now, the SQL ORDER BY clause does not only work for columns containing string values. It can handle numbers as well!

Let’s sort the list by employee number in descending order. Our query will look like this:

This way, we start with a larger employee number that decreases as we scroll down!

Ordering by More than One Field

Let’s see another interesting feature of this clause. You can order your results by more than one field. For instance, we can order employees by first and last name.

To make the comparison, let’s re-run the query where we sorted our output by first name in ascending order.

Now, look at the order of last names.

We can sort employees sharing the same first name according to their last name. To do this, we must simply type:

By writing this “, last_name “, we designated the second column of interest.

Now all people with the same first name are ordered by their surname.

The Benefits of Ordering Data

To sum up, the SQL ORDER BY clause is not mandatory. Rather, it is a helpful tool. Whenever you need to sort your data in ascending or descending order, you can use it.

Otherwise, there’s yet another extremely powerful tool that will allow you to retrieve more meaningful data by avoiding repetition — The GROUP BY clause.

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

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