Questão 3 - HCPA 2020 - ANALISTA DE TI (DESENVOLVIMENTO)

questão 3 consulta sql

Confira abaixo a resposta da questão sobre consulta SQL com o uso de JOIN, COUNT, WHERE, GROUP BY, HAVING nas alternativas.

Considere as tabelas aip_pacientes e agh_atendimentos abaixo: 

[COLOCAR IMAGEM]

No SGBD Oracle, a consulta que retorna o nome do aip_pacientes e a quantidade de agh_atendimentos para pacientes que tiveram mais de 10 agh_atendimentos no hospital é: 

(A) SELECT nome, COUNT(*) AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo AND COUNT(*) > 10 

(B) SELECT nome FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo AND COUNT(*) > 10 GROUP BY codigo 

(C) SELECT nome, count(*) AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo GROUP BY nome HAVING COUNT(*) >10 

(D) SELECT nome, COUNT(*) AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo AND QUANTIDADE > 10 GROUP BY codigo 

(E) SELECT nome, COUNT(*) AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo GROUP BY codigo HAVING QUANTIDADE >10

Vamos analisar cada opção:

(A) SELECT nome, COUNT() AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo AND COUNT() > 10: Esta consulta tem um problema na cláusula WHERE. Não é possível usar COUNT(*) diretamente na cláusula WHERE. Além disso, falta a cláusula GROUP BY para agrupar por nome e contar a quantidade de atendimentos.

(B) SELECT nome FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo AND COUNT(*) > 10 GROUP BY codigo: Nesta consulta, falta a função de agregação COUNT(*) na seleção dos campos, e a cláusula GROUP BY não está corretamente configurada para calcular a contagem de atendimentos.

(C) SELECT nome, count() AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo GROUP BY nome HAVING COUNT() >10: Esta consulta está correta. Ela seleciona o nome dos pacientes, realiza um join entre as tabelas aip_pacientes e agh_atendimentos, agrupa os resultados pelo nome do paciente, conta a quantidade de atendimentos para cada paciente e aplica a condição HAVING para filtrar apenas aqueles com mais de 10 atendimentos.

(D) SELECT nome, COUNT(*) AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo AND QUANTIDADE > 10 GROUP BY codigo: Esta consulta tenta usar a variável QUANTIDADE na cláusula WHERE, o que não é possível. Além disso, falta a cláusula HAVING para aplicar a condição de contagem.

(E) SELECT nome, COUNT(*) AS QUANTIDADE FROM aip_pacientes, agh_atendimentos WHERE codigo = pac_codigo GROUP BY codigo HAVING QUANTIDADE >10: Aqui, também há tentativa de usar a variável QUANTIDADE na cláusula HAVING sem ser definida na consulta. Além disso, a contagem deveria ser feita pelo nome do paciente, não pelo código.

Portanto, a única opção correta é a (C). 

O assunto principal abordado na questão é o uso de JOIN, GROUP BY, COUNT, WHERE e HAVING em consultas SQL para filtrar e agrupar dados de múltiplas tabelas. Para dominar esse assunto, é fundamental compreender como usar corretamente essas cláusulas para obter os resultados desejados.

Quer acompanhar as novidade do site?

Leia mais em: onteudo.portalfaurgs.com.br/a...

Questão 3 - HCPA 2020 - ANALISTA DE TI (DESENVOLVIMENTO)

Última atualização: 2024-02-16

Quer acompanhar as novidade do site?
Veja também:

Como fazer agrupamento sql por raiz do cnpj?

agrupamento sql raiz do cnpj

Como remover caracteres especiais no mysql?

remover caracteres especiais mysql

Como alterar nome da tabela no MySQL?

Alterar nome de tabela mysql

Questão 24 - HCPA 2009/3 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

questão 24 consulta oracle DB_LINKs

Questão 22 - HCPA 2009/4 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS)

questão 22 operadores de conjunto no Oracle 8i

Como buscar entrada e saída de produto por um período com sql?

Entrada e saída de produtos por período SQL

Web Stories