Ir para conteúdo

POWERED BY:

Arquivado

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

Maycon Vieira

[Resolvido] Pesquisa Min e Max com tabelas diferentes

Recommended Posts

Bom dia.

 

Peguei alguns exercicios para estudar SQL e me deparei um com problema

tenho 2 tabelas: funcionarios e cargo

 

fazendo uma pesquisa preciso mostrar o menor e o maior salarios (cargo) de seus respectivos funcionarios

 

na pequisa ou consigo mostrar os 2 salarios ou o nome de todos os funcionarios, não consigo por exeplo mostrar

 

Funcionario salario

Joao 800

Maria 1000

 

ou qualquer outro jeito que eu mostre o menor salario com seu funcionario e o maior.

 

tentei fazer subselects, mas não estou sabendo a sintaxe do código, alguem pode me ajudar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Publica por favor a descrição das tabelas e a sql que você fez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE CUR_FUNCIONARIOS(
COD_PESSOA NUMBER(7) NOT NULL,
NOM_PESSOA VARCHAR2(25) NOT NULL,
END_PESSOA VARCHAR2(50),
CONSTRAINT PK_FUNCIONARIO PRIMARY KEY (COD_PESSOA)
);

CREATE TABLE CUR_CARGO(
COD_PESSOA NUMBER(7) REFERENCES CUR_FUNCIONARIOS NOT NULL,
VAL_SALARIO NUMBER,
CONSTRAINT PK_CARGO PRIMARY KEY (COD_PESSOA)
);

 

Um dos meus selects foi

SELECT NOM_PESSOA, MAX(VAL_SALARIO) 
FROM CUR_FUNCIONARIOS A, CUR_CARGO B
WHERE A.COD_PESSOA = B.COD_PESSOA;

No select deu um erro falando: "não é uma função de grupo simples"

 

SELECT NOM_PESSOA, (SELECT MAX(VAL_SALARIO) FROM CUR_CARGO) 
FROM CUR_FUNCIONARIOS A, CUR_CARGO B
WHERE A.COD_PESSOA = B.COD_PESSOA;

No select acima, aparece todos os funcionarios com o maior salario.

 

SELECT NOM_PESSOA, SAL.SALARIO_MAX
FROM CUR_FUNCIONARIOS A,
(SELECT MAX(VAL_SALARIO) AS SALARIO_MAX
FROM CUR_CARGO GROUP BY COD_PESSOA) SAL,
WHERE SAL.COD_PESSOA = A.COD_PESSOA;

Este foi o ultimo que tentei mas que da erro falando que o nome da tabela esta errado

 

Estou meio perdido nesta loja, ou na sintaxe de como montar o código

 

Tenho inserts basico para povoar as tabelas, e o objetivo da pesquisa é mostrar o funcionario e o menor salario, funcionario e o maior salario.

 

Estou com dificuldade pois quando coloca Max(val_salario) ou min(val_salario), daerro pois não é uma função simples e quando tento fazer uma subconsulta, da outros erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) falta de group by

 

 

SELECT NOM_PESSOA, MAX(VAL_SALARIO) 
FROM CUR_FUNCIONARIOS A, CUR_CARGO B
WHERE A.COD_PESSOA = B.COD_PESSOA
GROUP BY NOM_PESSOA;

 

2) maior salÁrio

 

SELECT MAX(VAL_SALARIO)
FROM  CUR_FUNCIONARIOS , CUR_CARGO
WHERE CUR_FUNCIONARIOS.COD_PESSOA = CUR_CARGO.COD_PESSOA

 

3) PESSOA DE MAIOR SALÁRIO

 

SELECT MAX(VAL_SALARIO)
FROM  CUR_FUNCIONARIOS , CUR_CARGO
WHERE CUR_FUNCIONARIOS.COD_PESSOA = CUR_CARGO.COD_PESSOA
AND   CUR_CARGO.VAL_SALARIO = (SELECT MAX(VAL_SALARIO)
                              FROM  CUR_FUNCIONARIOS , CUR_CARGO
                              WHERE CUR_FUNCIONARIOS.COD_PESSOA = CUR_CARGO.COD_PESSOA)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

 

Peguei alguns exercicios para estudar SQL e me deparei um com problema

tenho 2 tabelas: funcionarios e cargo

 

fazendo uma pesquisa preciso mostrar o menor e o maior salarios (cargo) de seus respectivos funcionarios

 

na pequisa ou consigo mostrar os 2 salarios ou o nome de todos os funcionarios, não consigo por exeplo mostrar

 

Funcionario salario

Joao 800

Maria 1000

 

ou qualquer outro jeito que eu mostre o menor salario com seu funcionario e o maior.

 

tentei fazer subselects, mas não estou sabendo a sintaxe do código, alguem pode me ajudar???

 

 

Consegui resolver meu problema graças a luz que o MOTTA me deu.

Juntando os codigos que ele me passou, consegui encontrar o maior salario junto com o nome da pessoa, depois usando o UNION fiz o mesmo select trocando o MAX por MIM

segue comando usado:

 

SELECT NOM_PESSOA AS NOME, VAL_SALARIO AS SALARIO
FROM CUR_FUNCIONARIOS A, CUR_CARGO B
WHERE A.COD_PESSOA = B.COD_PESSOA AND
B.VAL_SALARIO = (SELECT MAX(VAL_SALARIO)
FROM CUR_FUNCIONARIOS A, CUR_CARGO B
WHERE A.COD_PESSOA = B.COD_PESSOA)
union
SELECT NOM_PESSOA AS NOME, VAL_SALARIO AS SALARIO
FROM CUR_FUNCIONARIOS A, CUR_CARGO B
WHERE A.COD_PESSOA = B.COD_PESSOA AND
B.VAL_SALARIO = (SELECT MIN(VAL_SALARIO)
FROM CUR_FUNCIONARIOS A, CUR_CARGO B
WHERE A.COD_PESSOA = B.COD_PESSOA); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

:clap:

 

Olá amigos,sou novo no sql e estou fazendo uma cadeira e tenho tido bastante dificuldade, instalei o oracle para estudar e habilitei o banco/user HR preciso fazer um select do seguinte.

 

1. Fazer uma pesquisa e retornar o Nome/sobreNome do funcionário com o maior salário.

 

SELECT first_name||' '||last_name, salary
 FROM employees and
     (SELECT MAX(salary)
       FROM  employees)

 

poderiam me dizer onde estou errando? tenho uma série de exercicios para fazer.

 

Olá amigos,sou novo no sql e estou fazendo uma cadeira e tenho tido bastante dificuldade, instalei o oracle para estudar e habilitei o banco/user HR preciso fazer um select do seguinte.

 

1. Fazer uma pesquisa e retornar o Nome/sobreNome do funcionário com o maior salário.

 

SELECT first_name||' '||last_name, salary
 FROM employees and
     (SELECT MAX(salary)
       FROM  employees)

 

poderiam me dizer onde estou errando? tenho uma série de exercicios para fazer.

 

 

Consegui, estava fazendo o maior absurdo... heehheh mas como estou começando acho que até é aceitável.

 

Vlww galera.

 

SELECT first_name||' '||last_name, salary
 FROM employees
 where salary=(SELECT MAX(salary)
       FROM  employees)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com outra questão que talvez possam me ajudar.

 

estou usando o usuário/banco HR

 

Fazer uma pesquisa e retornar as regiões e a quantidade de escritórios.(Mostrar a região e o número de escritórios).

será que alguém pode me ajudar?? não estou sabendo relacionar os campos/tabelas.

 

Obrigado.

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.