Estes dois comandos já não são tão básicos assim, sendo usados em ocasiões particulares, e que em conjunto com outros comandos podem transformar por completo os resultados da sua pesquisa.
Usado pelo comando SELECT, estes dois comandos fazem respectivamente, uma ordenação dos resultados e um agrupamento deles. Podendo até serem usados ao mesmo tempo.
O order by é mais fácil de entender. Como o nome já sugere, ele cria uma ordem nos resultados. Vejamos exemplos para facilitar.
select nome, idade from tabela_clientes
Esse comando irá retornar pra você uma lista completa de clientes, mas na ordem em que foram inseridos no banco. Isso você já sabia né!
Agora digamos que você quer a mesma lista, mas ordenada por nome, ou seja, ordem alfabética. Fácil:
select nome, idade from tabela_clientes order by nome
Foi fácil não foi? Agora digamos que você queira a ordem inversa, ao invés de A – Z, trazer de Z – A (de trás pra frente). Fácil também. O comando order by tem um parâmetro adicional em que você pode especificar se quer uma ordem acendente ou descendente, crescente ou descrecente, que seja. Basta usar as palavras ASC ou DESC.
Então para trazer a mesma pesquisa ordenada de trás pra frente ficaria:
select nome, idade from tabela_clientes order by nome desc
Pra complicar um pouquinho, vejamos, vamos recuperar a lista por ordem alfabética A-Z e quando os nomes forem iguais, mostre por ordem de idade, primeiro os mais velhos.
select nome, idade from tabela_clientes order by nome asc, idade desc
Até que não foi nenhum bixo de sete cabeças. Agora vejamos como usar o group by.
O group by na verdade é bem fácil também, ele começa a ficar confuso quando usado em conjunto com outros elementos do SQL em grandes instruções.
Pra simplificar o exemplo, vamos supor uma lista de nomes apenas. E nesta lista existem nomes repetidos. Você quer visualizar a lista, mas sem ver nomes duplicados ou triplicados. Então usa o group by.
select nome from tabela_clientes group by nome
Bem simples hein. Só pra ficar um pouco mais interessante, vou adicionar um campo do qual estarei falando futuramente em outros posts. Caso você não conheça, não se preocupe, abordarei no futuro.
Para saber a quantidade de vezes que o campo se repete, o número de agrupamentos que foi feito, adicione a coluna:
select count(*), nome from tabela_clientes group by nome
Agora você vê a coluna de nomes, sem repetições e ainda sabe qual a quantidade de vezes que este nome aparece na tabela.
Pronto, você já sabe usar os comandos order by e group by, agora comece a brincar com eles. Sucesso!
Loading...
Bacana foi muito bem explicado valeu
Ola, eu estou a fazer um trabalho em SQL e não estou a conseguir fazer esta questão:
Ordena as bandas por ordem de consumo de águas, com respectivos valores.
Pode-me ajudar? tenho que entregar este trabalho ate logo a noite e já dei muitas voltas a essa questão e não consigo arranjar a solução.
Obrigada
ajudo sim, pelo http://forum.mariosam.com explique melhor sua duvida por la. t+
Bacana cara, explicação bem feita.
Parabéns
Abraço
Felipe Souza