DB2 - Banco de dados - Instruções e Funções Básicas - ORDER BY


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

ORDER BY

Como parte da instrução SELECT do SQL, você pode especificar a seqüência na qual as linhas selecionadas são exibidas.
Você também pode excluir linhas duplicadas em uma seleção.

ORDER BY especifica a ordem na qual as linhas aparecem em um relatório.
Se você utilizar ORDER BY, ela deverá ser a última cláusula de toda a instrução.
Todas as colunas nomeadas após ORDER BY também deverão ser nomeadas após SELECT.

O formato da cláusula ORDER BY é:

  ORDER BY columnname ASC|DESC

A palavra-chave ASC especifica que você deseja que os dados apareçam em ordem crescente;
isto é o padrão se nenhuma sequência for especificada.
A palavra-chave DESC especifica que você deseja que os dados apareçam em ordem decrescente.

A consulta a seguir produz um relatório com linhas na ordem crescente.

   SELECT NAME
   ,      JOB
   ,      YEARS
   FROM   Q.STAFF
   WHERE  DEPT = 84
   ORDER  BY JOB

Aqui está o relatório:

   NAME      JOB    YEARS
   --------- -----  -----
   GAFNEY    CLERK      5
   QUILL     MGR       10
   DAVIS     SALES      5
   EDWARDS   SALES      7

Ao invés de nomear uma coluna para columnname, é possível fazer referência à coluna por sua posição na instrução SELECT, que é expressa como um número.

Sequência de Classificação

A seqüência de classificação para dados de caracteres em ordem numérica é:

  1. Caracteres especiais, incluindo espaços em branco
  2. Letras minúsculas, em ordem alfabética
  3. Letras maiúsculas, em ordem alfabética
  4. Números
  5. Valores nulos

A seqüência padrão para a classificação dos números está em ordem crescente.
A sequência padrão para a classificação de valores DATE, TIME, TIMESTAMP e TIMESTAMP WITH TIME ZONE é cronológica.
A seqüência de classificação para dados DBCS é determinada pelo valor interno dos dados e geralmente não é significativa.

Exemplos:

  • Para listar os funcionários em ordem decrescente por salário, utilize uma consulta como a seguinte:
       SELECT ID
       ,      NAME
       ,      SALARY
       FROM   Q.STAFF
       ORDER  BY SALARY DESC
  • Para listar os funcionários em ordem crescente por sobrenome, utilize uma consulta como a seguinte:
       SELECT ID
       ,      NAME
       ,      SALARY
       FROM   Q.STAFF
       ORDER  BY NAME

Classificando por Mais de Uma Coluna

Para ordenar por mais de uma coluna, coloque o nome ou o número da coluna em uma lista após ORDER BY.
Você poderá misturar nomes e números de colunas na mesma lista.
Se desejar ordenar por uma coluna definida, deverá utilizar seu número de coluna.

Um nome de coluna em uma cláusula ORDER BY, possivelmente seguido de ASC ou DESC, é uma especificação de classificação.
As especificações de classificação de uma lista são separadas por vírgulas.
A primeira coluna após a cláusula ORDER BY é colocada em ordem primeiro, a segunda coluna é ordenada dentro dos limites da primeira coluna ORDER BY, e assim por diante.

Exemplos:

  1. Para classificar por anos em serviço, use uma consulta como a seguinte:
       SELECT NAME
       ,      JOB
       ,      YEARS
       FROM   Q.STAFF
       WHERE  DEPT=84
       ORDER  BY JOB, YEARS DESC

    Essa consulta produz o seguinte relatório:

       NAME        JOB   YEARS
       --------- -----   -----
       GAFNEY    CLERK       5
       QUILL     MGR        10
       EDWARDS   SALES       7
       DAVIS     SALES       5
  2. Para classificar por trabalho em anos, use uma consulta como a seguinte:
    
       SELECT NAME
       ,      JOB
       ,      YEARS
       FROM   Q.STAFF
       WHERE  DEPT=84
       ORDER  BY YEARS DESC, JOB

    Essa consulta produz o seguinte relatório:

       NAME      JOB     YEARS
       --------- -----   -----
       QUILL     MGR       10
       EDWARDS   SALES      7
       GAFNEY    CLERK      5
       DAVIS     SALES      5
  3. Para listar os funcionários em ordem decrescente por anos de serviço e, em cada ano, em ordem decrescente por salário, utilize uma consulta como a seguinte:
       SELECT YEARS
       ,      ID
       ,      NAME
       ,      SALARY
       FROM   Q.STAFF
       ORDER  BY YEARS DESC, SALARY DESC
  4. Para listar os funcionários em ordem crescente por salário no departamente, utilize uma consulta como a seguinte:
       SELECT DEPT
       ,      ID
       ,      NAME
       ,      SALARY
       FROM   Q.STAFF
       ORDER  BY DEPT, SALARY

Classificando as Colunas por Número de Coluna

Você não pode utilizar uma expressão como SALARY+COMM após uma instrução ORDER BY.
Para classificar por uma coluna definida por uma expressão, utilize um número que especifica a posição da coluna ' na instrução SELECT da consulta.
Por exemplo, considere a seguinte consulta:

   SELECT ID
   ,      NAME
   ,      SALARY+COMM
   FROM   Q.STAFF
   WHERE  COMM IS NOT NULL
   ORDER  BY 3

Na consulta acima, SALARY+COMM é a coluna 3 na instrução SELECT, então, ORDER BY 3 especifica a classificação por aquela coluna.

Você pode utilizar mais de um número de coluna em uma lista após ORDER BY e pode utilizar nomes e números de colunas na mesma lista.
Por exemplo, para listar os funcionários em ordem descrescente por salário em um departamento, utilize uma consulta como a seguinte:

   SELECT DEPT
   ,      ID
   ,      NAME
   ,      SALARY
   FROM   Q.STAFF
   ORDER  BY 1, 4 DESC


© Copyright IBM Corp.