[Resolvido]Duvida SQL consulta sem interferência de dados

6 respostas
M

Olá pessoal preciso de uma consulta que me retorne dois valores um maximo e outro minimo!
Até ai tudo bem eu consegui fazer porem nesta mesma consulta eu preciso buscar outros campos e quando eu busco esses campos
eles interferem no resultado da primeira consulta preciso de sugestoes :D Obrigadoo!

SELECT 
	TABELA_SALARIAL.PROJETO AS projeto,
	TABELA_SALARIAL.NIVEL AS nivel,
	TABELA_SALARIAL.VALORAJUSTADO AS valorAjustado,
	TABELA_SALARIAL.VALOR AS valorHora,
	TABELA_SALARIAL.PADRAO AS padrao,

	MAX (VALORAJUSTADO) AS MAXIMO,
	MIN(VALORAJUSTADO) AS MINIMO
	
FROM TABELA_SALARIAL AS TABELA_SALARIAL

GROUP BY NIVEL, PROJETO, VALORAJUSTADO, VALOR, PADRAO

ORDER BY NIVEL, PROJETO;

6 Respostas

Aleksandro

Primeiramente interfere em que ?

Quando você faz uma consulta que trará o valor de máximo e minimo , estes pertencerão ao conjunto de dados dentro do seu agrupando, portanto tem que ver o que você precisa de fato, para quem sabe podermos te ajudar …

1 - O que sua consulta precisa trazer ?
2 - O valor máximo pertence a que grupo ?
3 - O valor minimo pertence a que grupo ?

E por ai vai …

M

Bem quando eu faço a consulta com apenas dois campos
e buscando o valor maximo e minimo dos salarios
funciona normal

SELECT 
	TABELA_SALARIAL.PROJETO AS projeto,
	TABELA_SALARIAL.NIVEL AS nivel,
	

	MAX (VALORAJUSTADO) AS MAXIMO,
	MIN(VALORAJUSTADO) AS MINIMO
	
FROM TABELA_SALARIAL AS TABELA_SALARIAL

GROUP BY NIVEL, PROJETO;

ela me retorna o valor maximo e o valor minimo de cada NIVEL corretamente

quando eu busco os outros campos :

SELECT 
	TABELA_SALARIAL.PROJETO AS projeto,
	TABELA_SALARIAL.NIVEL AS nivel,
	TABELA_SALARIAL.VALORAJUSTADO AS valorAjustado,
	TABELA_SALARIAL.VALOR AS valorHora,
	TABELA_SALARIAL.PADRAO AS padrao,
	MAX (VALORAJUSTADO) AS MAXIMO,
	MIN(VALORAJUSTADO) AS MINIMO
	
FROM TABELA_SALARIAL AS TABELA_SALARIAL

GROUP BY NIVEL, PROJETO, VALORAJUSTADO, VALOR, PADRAO;

Ai ele me retorna como valor MAXIMO e MINIMO, o MINIMO

To começando agora a mexer com SQL parece simples mas to apanhando!
Obrigado

augustovieira

Não tenho as tabelas para testar, mas creio que esse select resolva:

SELECT VALORES.projeto,
           VALORES.nivel,
           VALORES.MAXIMO,
           VALORES.MINIMO,
           TS.valorAjustado,
           TS.valorHora,
           TS.padrao
      FROM (SELECT TABELA_SALARIAL.PROJETO AS projeto,
                  TABELA_SALARIAL.NIVEL AS nivel,
                  MAX (VALORAJUSTADO) AS MAXIMO,
                  MIN(VALORAJUSTADO) AS MINIMO	
            FROM TABELA_SALARIAL AS TABELA_SALARIAL
            GROUP BY NIVEL, PROJETO) VALORES, 
            TABELA_SALARIAL TS
  ORDER BY VALORES.nivel, VALORES.projeto
  GROUP BY VALORES.nivel, VALORES.projeto, TS.valorAjustado, TS.valorHora, TS.padrao
augustovieira
SELECT 
	TABELA_SALARIAL.PROJETO AS projeto,
	TABELA_SALARIAL.NIVEL AS nivel,
	TABELA_SALARIAL.VALORAJUSTADO AS valorAjustado,
	TABELA_SALARIAL.VALOR AS valorHora,
	TABELA_SALARIAL.PADRAO AS padrao,
	MAX (VALORAJUSTADO) AS MAXIMO,
	MIN(VALORAJUSTADO) AS MINIMO
	
FROM TABELA_SALARIAL AS TABELA_SALARIAL

GROUP BY NIVEL, PROJETO, VALORAJUSTADO, VALOR, PADRAO;

ESSE GROUP BY VALOR SAIU DA ONDE? CADE ESSE CAMPO???

M

augustovieira Valeu :smiley: :smiley:
Funcinou perfeitamente!

Ficou assim

SELECT VALORES.projeto,  
         VALORES.nivel,  
         VALORES.MAXIMO,  
         VALORES.MINIMO,  
         TS.valorAjustado,  
         TS.valor,  
         TS.padrao  
    FROM (SELECT TABELA_SALARIAL.PROJETO AS projeto,  
                TABELA_SALARIAL.NIVEL AS nivel,  
                MAX (VALORAJUSTADO) AS MAXIMO,  
                MIN(VALORAJUSTADO) AS MINIMO      
          FROM TABELA_SALARIAL AS TABELA_SALARIAL  
          GROUP BY NIVEL, PROJETO) VALORES,   
          TABELA_SALARIAL TS  
ORDER BY VALORES.nivel, VALORES.projeto

Eu retirei o Group By do final!
Funcionou perfeitamente
Muito obrigadoo!

augustovieira

Por nada, Estamos aí para ajudar :slight_smile:

Criado 1 de março de 2013
Ultima resposta 1 de mar. de 2013
Respostas 6
Participantes 3