Ordenação de registros através de consulta SQL em Python
Para ordenar as linhas do resultado,
é necessário utilizar o comando ORDER
BY.
Exemplo
Vamos selecionar de nossa tabela users todos
os usuários e ordená-los por idade do
menor para o maior:
query = "SELECT * FROM users ORDER BY age"
Resultado do código executado:
{'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}
Exemplo
Vamos alterar a ordem de classificação usando
o comando DESC:
query = "SELECT * FROM users ORDER BY age DESC"
Resultado do código executado:
{'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}
Exemplo
Vamos selecionar todos os usuários com salário 500
e ordená-los por idade do menor
para o maior:
query = "SELECT * FROM users WHERE salary=500 ORDER BY age"
Resultado do código executado:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Exemplo
É possível ordenar não por um campo, mas por vários. Vamos, por exemplo, selecionar todos os usuários e ordená-los primeiro por idade em ordem crescente, e os usuários com as mesmas idades serão ordenados por salário em ordem crescente:
query = "SELECT * FROM users ORDER BY age, salary"
Resultado do código executado:
{'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}
Exemplo
O comando ORDER BY pode ser combinado
com LIMIT. Neste caso, é necessário
escrever primeiro o comando de ordenação, e depois - o limite.
No próximo exemplo, primeiro vamos ordenar
os registros por idade em ordem crescente, e depois
pegar as primeiras 3 unidades:
query = "SELECT * FROM users ORDER BY age LIMIT 3"
Resultado do código executado:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
Tarefas práticas
Selecione todos os usuários e ordene-os por salário em ordem crescente.
Selecione todos os usuários e ordene-os por salário em ordem decrescente.
Selecione todos os usuários e ordene-os por nome.
Selecione os usuários com salário 500 e
ordene-os por idade.
Selecione todos os usuários e ordene-os por nome e por salário.
Ordene os usuários por salário em ordem crescente
e obtenha os primeiros 3 funcionários do
resultado da ordenação.
Ordene os usuários por salário em ordem decrescente
e obtenha os primeiros 3 usuários do
resultado da ordenação.