Сортировка записей через SQL запрос в Python
Чтобы отсортировать строки результата,
нужно воспользоваться командой ORDER
BY
.
Пример
Выберем из нашей таблицы users
всех
юзеров и отсортируем их по возрасту от
меньшего к большему:
query = "SELECT * FROM users ORDER BY age"
<-show-
Результат выполненного кода:
<~show~>{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
{'id': 6, 'name': 'user6', 'age': 28, 'salary': 900}
{'id': 4, 'name': 'user4', 'age': 30, 'salary': 900}
Пример
Поменяем порядок сортировки с помощью
команды DESC
:
query = "SELECT * FROM users ORDER BY age DESC"
Результат выполненного кода:
{'id': 4, 'name': 'user4', 'age': 30, 'salary': 900}
{'id': 6, 'name': 'user6', 'age': 28, 'salary': 900}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
Пример
Выберем всех юзеров с зарплатой 500
и отсортируем их по возрасту от меньшего
к большему:
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Результат выполненного кода:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Пример
Можно сортировать не по одному полю, а по нескольким. Давайте для примера выберем всех юзеров и отсортируем их сначала по возрастанию возраста, а юзеров с одинаковыми возрастами отсортируем по возрастанию зарплаты:
query = "SELECT * FROM users ORDER BY age, salary"
Результат выполненного кода:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
{'id': 6, 'name': 'user6', 'age': 28, 'salary': 900}
{'id': 4, 'name': 'user4', 'age': 30, 'salary': 900}
Пример
Команду ORDER BY
можно комбинировать
с LIMIT
. При этом сначала нужно
писать команду сортировки, а потом - лимит.
В следующем примере сначала отсортируем
записи по возрастанию возраста, а потом
возьмем первые 3
штуки:
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Результат выполненного кода:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
Практические задачи
Достаньте всех юзеров и отсортируйте их по возрастанию зарплаты.
Достаньте всех юзеров и отсортируйте их по убыванию зарплаты.
Достаньте всех юзеров и отсортируйте их по имени.
Достаньте юзеров с зарплатой 500
и
отсортируйте их по возрасту.
Достаньте всех юзеров и отсортируйте их по имени и по зарплате.
Отсортируйте юзеров по возрастанию зарплаты
и получите первых 3
работника из
результата сортировки.
Отсортируйте юзеров по убыванию зарплаты
и получите первых 3
юзера из
результата сортировки.