Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jerri Dick

[Resolvido] Select MAX com Group

Recommended Posts

Olá amigos, estou com o seguinte problema, tenho uma tabela onde ficam listatos nomes de funcionarios, seus postos, na empresa, e suas idades, porem gostaria de fazer com que, me retornasse o usuário mais velho, de cada posto. Segue a tabela abaixo.

CREATE TABLE IF NOT EXISTS `teste` (
 `nome` varchar(50) NOT NULL,
 `rank` varchar(50) NOT NULL,
 `idade` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `motta4`.`teste` (`nome` ,`rank` ,`idade`)
VALUES ('Roberto', 'admin', '29'),
('Carlos', 'Supervisor', '32'),
('Julio','Admin','27'),
('Alberto','Usuario','46'),
('Marcela','usuario','22'),
('Luciana','Vendedor','41'),
('Clarice','Admin','52'),
('MArcela','Supervisor','33'),
('Gilberto','Admin','54'),
('Jerri','Usuario','30'),
('Alex','usuario','22'),
('Luciano','Vendedor','56');

________________________________________
|nome         |rank        |Idade	|
|--------------------------|------------|
|Roberto      |Admin       |	29 	|
|Carlos       |Supervisor  |	32	|
|Julio        |Admin       |	27	|
|Alberto      |Usuario     |	46	|
|Marcela      |usuario     |	22	|
|Luciana      |Vendedor    |	41	|
|Clarice      |Admin       | 	52	|
|MArcela      |Supervisor  |	33	|
|Gilberto     |Admin       |	54	|
|Jerri        |Usuario     |	30	|
|Alex         |usuario     |	22	|
|Luciano      |Vendedor    |	56	|
 ---------------------------------------

O resultado que gostaria é o seguinte:

 _______________________________________
|nome         |rank        |Idade	|
|--------------------------|------------|
|Gilberto     |Admin	   |	54	|
|MArcela      |Supervisor  |	33	|
|Alberto      |Usuario     |	46	|
|Luciano      |Vendedor    |	56	|
 ---------------------------------------

Tentei com o a queri

select *, max(idade) from teste GROUP by rank

, que foi o que encontrei na minbha busca pelo google, mas sempre me retornava o seguinte resultado:

 _______________________________________________________
|nome         |rank        |Idade	|max(idade)	|
|--------------------------|------------|---------------|
|Roberto      |Admin	   |	29	|	54	|
|Carlos       |Supervisor  |	32	|	33	|
|Alberto      |Usuario     |	46	|	46	|
|Luciana      |Vendedor    |	41	|	56	|
 -------------------------------------------------------

Consegui usando um

where rank= XXXXX

, porem, ai tinha que fazer 1 query para cada rank.

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT *

FROM TESTE T1

WHERE IDADE = (SELECT MAX(IDADE)

FROM TESTE T2

WHERE T2.RANK = T1.RANK)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado caro Motta, funcionou perfeitamente, não sabia que era possível realizar uma consulta dentro de outra, vivendo e aprendendo.

 

SELECT *
FROM TESTE T1
WHERE IDADE = (SELECT MAX(IDADE) 
               FROM TESTE T2
               WHERE T2.RANK = T1.RANK)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.