Translate

sábado, 29 de novembro de 2014

Postgresql - Função MIN

A função MIN retorna o valor mínimo (menor valor) de uma coluna. 
Serão descritos 3 exemplos de utilização desta função. 

Caso tenha interesse, faça o download ou veja os scripts no github.


SINTAXE
SELECT MIN(nome_da_coluna) FROM nome_da_tabela;

1º Exemplo
 
Neste exemplo, utilizaremos a tabela "tb_imoveis". Veja a imagem abaixo:

tb_imoveis
  

Cenário: qual o imóvel que possui o valor mais baixo?

Solução: o valor dos imóveis estão armazenados na coluna valor, logo devemos calcular o valor mais baixo a partir desta coluna.
Para calcularmos o valor mínimo, executamos a sentença abaixo:

SELECT MIN(valor) FROM tb_imoveis;

Após a execução, teremos o imóvel com o valor mais baixo. Conforme podemos visualizar na imagem a seguir:

O nome da coluna aparece como "min", mas vamos supor que precisamos que seja exibido "imovel_valor_minimo".
Podemos modificar o nome desta coluna, ou seja, criar um alias (apelido). Colocamos o alias depois do "AS
SELECT MIN(valorAS imovel_valor_minimo FROM tb_imoveis;

Após a execução, o nome da coluna será exibido como "imovel_valor_minimo".


2º Exemplo

Cenário: Uma equipe de três atletas treina uma série de corridas. Queremos saber qual foi o melhor treino para cada atleta, ou seja qual corrida levou menos tempo.
Neste exemplo, utilizaremos a tabela "tb_treino".

tb_treino

Solução: já que procuramos o menor tempo por atleta, vamos agrupar os atletas que estão armazenados na coluna "atleta_id". Para agrupar, utilizaremos o " GROUP BY".

Para calcularmos o menor tempo por atleta, executamos a sentença abaixo:

SELECT atleta_id, MIN(tempo) AS melhor_tempo
FROM tb_treino
GROUP BY atleta_id;

Após a execução, teremos o melhor tempo  para cada atleta. Conforme podemos visualizar na imagem abaixo:



Para ordenar a identificação dos atleta em ordem crescente, ou seja, do valor menor para o maior, deve-se usar "ORDER BY" seguido do nome da coluna, neste caso, a coluna 'atleta_idserá ordenada .
Para ordenar as identificações, utilizamos a sentença abaixo:

SELECT atleta_id, 
MIN(tempo) AS pior_tempo
FROM tb_treino
GROUP BY atleta_id
ORDER BY atleta_id;

Após a execução, teremos as identificações dos atletas em ordem crescente. Conforme podemos visualizar na imagem abaixo:




3º Exemplo

Cenário: Qual o atleta que obteve o melhor treino? Qual a data que o treino ocorreu?
Neste exemplo, utilizaremos a tabela "tb_treino".

tb_treino

Solução: também podemos utilizar a função "MIN" para filtrar um registro, desde que a função "MIN" pertença a uma subquery.

    Veja a subquery destacada, em azul, na sentença abaixo:

    SELECT 
    atleta_id,   
    data, 
    tempo AS melhor_tempo
    FROM tb_treino 
    WHERE tempo =
    (
        SELECT MIN(tempo)
        FROM tb_treino
    )

    Após a execução da sentença, teremos o resultado exibido na imagem abaixo:

    Observação:

    A função MIN não funciona no WHERE sem a subquery.

    WHERE tempo = MIN(tempo)

    Deixe o seu comentário ou sugestão.
    Gostou?  Siga no Google +  ou Facebook.

    domingo, 23 de novembro de 2014

    Postgresql - Funcão MAX

    A função MAX retorna o valor máximo (maior valor) de uma coluna. 
    Serão descritos 3 exemplos de utilização desta função. 

    Caso tenha interesse, faça o download ou veja os scripts no github.


    SINTAXE
    SELECT MAX(nome_da_coluna) FROM nome_da_tabela;

    1º Exemplo
     
    Neste exemplo, utilizaremos a tabela "tb_imoveis". Veja a imagem abaixo:

    tb_imoveis
      

    Cenário: qual o imóvel que possui o valor mais alto?

    Solução: o valor dos imóveis estão armazenados na coluna valor, logo devemos calcular o valor mais alto a partir desta coluna.
    Para calcularmos o valor máximo, executamos a sentença abaixo:

    SELECT MAX(valor) FROM tb_imoveis;

    Após a execução, teremos o imóvel com o valor mais alto. Conforme podemos visualizar na imagem abaixo:


    O nome da coluna aparece como "max", mas vamos supor que precisamos que seja exibido "imovel_valor_maximo".
    Podemos modificar o nome desta coluna, ou seja, criar um alias (apelido). Colocamos o alias depois do "AS
    SELECT MAX(valorAS imovel_valor_maximo FROM tb_imoveis;

    Após a execução, o nome da coluna será exibido como "imovel_valor_maximo".



    2º Exemplo

    Cenário: Uma equipe de três atletas treina uma série de corridas. Queremos saber qual foi o pior treino para cada atleta, ou seja qual corrida levou maior tempo.
    Neste exemplo, utilizaremos a tabela "tb_treino".

    tb_treino

    Solução: já que procuramos o maior tempo por atleta, vamos agrupar os atletas que estão armazenados na coluna "atleta_id". Para agrupar, utilizaremos o " GROUP BY".

    Para calcularmos o maior tempo por atleta, executamos a sentença abaixo:

    SELECT atleta_id, MAX(tempo) AS pior_tempo
    FROM tb_treino
    GROUP BY atleta_id;

    Após a execução, teremos o pior tempo  para cada atleta. Conforme podemos visualizar na imagem abaixo:




    Para ordenar a identificação dos atleta em ordem crescente, ou seja, do valor menor para o maior, deve-se usar "ORDER BY" seguido do nome da coluna, neste caso, a coluna 'atleta_idserá ordenada .
    Para ordenar as identificações, utilizamos a sentença abaixo:

    SELECT atleta_id, 
    MAX(tempo) AS pior_tempo
    FROM tb_treino
    GROUP BY atleta_id
    ORDER BY atleta_id;

    Após a execução, teremos as identificações dos atletas em ordem crescente. Conforme podemos visualizar na imagem abaixo:





    3º Exemplo

    Cenário: Qual o atleta que obteve o pior treino? Qual a data que o treino ocorreu?
    Neste exemplo, utilizaremos a tabela "tb_treino".




    Solução: também podemos utilizar a função "MAX" para filtrar um registro, desde que a função "MAX" pertença a uma subquery.

      Veja a subquery destacada, em azul, na sentença abaixo:

      SELECT 
      atleta_id,   
      data, 
      tempo AS pior_tempo
      FROM tb_treino 
      WHERE tempo =
      (
          SELECT MAX(tempo)
          FROM tb_treino
      )

      Após a execução da sentença, teremos o resultado exibido na imagem abaixo:


      Observação:

      A função MAX não funciona no WHERE sem a  subquery.

      WHERE tempo = MAX(tempo)

      Deixe o seu comentário ou sugestão.
      Gostou?  Siga no Google +  ou Facebook.