Com relação à tabela, analise o comando SQL a seguir. ...
Atenção: para resolver a questão a seguir, considere a estrutura e a instância da tabela IMB exibida abaixo.
A B
2 NULL
3 3
4 3
4 2
NULL 1
5 0
Com relação à tabela, analise o comando SQL a seguir.
select A, count(*)
from IMB
where A is not NULL
group by A
having sum(B) > 2
Assinale o resultado que é exibido quando esse comando é executado.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: D
A questão aborda o tema de agregação em SQL utilizando as cláusulas GROUP BY e HAVING. Para resolver a questão, é necessário entender como essas cláusulas são usadas para agrupar dados e aplicar filtros em um conjunto de resultados agrupados, respectivamente. Adicionalmente, é preciso saber como a função de agregação COUNT() funciona e como a cláusula WHERE é usada para filtrar resultados antes da agregação.
O comando SQL dado na questão faz o seguinte:
- Filtrar da tabela IMB somente as linhas onde a coluna A não é NULL, utilizando a cláusula WHERE.
- Agrupar os resultados pela coluna A com a cláusula GROUP BY.
- Contar o número de linhas em cada grupo com a função COUNT(*).
- Aplicar um filtro nos grupos que têm a soma da coluna B maior que 2 com a cláusula HAVING.
Ao executar este comando, teremos o seguinte:
- O valor A = 2 é filtrado fora porque tem um NULL em B e, portanto, não contribui para a soma.
- O valor A = 3 tem apenas uma linha com B = 3, logo a soma e a contagem são ambas 1.
- O valor A = 4 aparece em duas linhas com os valores B = 3 e B = 2. A soma de B para este grupo é 5, e a contagem de linhas é 2.
- O valor A = 5 é filtrado fora pela cláusula HAVING porque a soma de B para este grupo é 0, que não é maior que 2.
- A linha com A sendo NULL é excluída imediatamente pela condição WHERE A is not NULL.
Portanto, apenas os grupos com A = 3 e A = 4 atendem a todas as condições, e os resultados retornados são o número de linhas para cada valor de A, ou seja:
- A = 3, 1 linha
- A = 4, 2 linhas
Esses resultados são apresentados na Alternativa D:
3 | 1
4 | 2
Assim, a resposta correta é a que apresenta a contagem de linhas para cada valor de A que atende à condição especificada de que a soma dos valores em B seja maior que 2, após a filtragem inicial para excluir linhas com A sendo NULL.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GAB D.
select * from IMB;
select A, count(*)
from IMB // até aqui ele realiza a contagem de linhas (6 linhas)
where A is not NULL // aqui restringe para a coluna A não nulo, dai ele conta 5 linhas.
group by A // aqui ele conta qtas vezes aparece cada num da coluna A (igual a letra A da questão)
having sum(B) > 2; //aqui ele restringe a contagem anterior aos valores cujo valores da coluna B são maiores que 2. Observe a coluna B, aparece duas vezes o valor 3 que é maior que 2, ao olhar o valor 3 da coluna B você deverá contar quantas vezes os valores da coluna A apareceram. O número 3 (olhando na COLUNA A) apareceu uma vez e o número 4 (olhando na coluna A) apareceu 2 vezes (é p isso que serve o COUNT). Assim a resposta é a letra D
3|1 --> o n. 3 apareceu na Coluna A uma vez e seu correspondente na coluna B é maior que 2
4|2 --> o n. 4 apareceu na Coluna A duas vezes e seu correspondente em B é maior que 2.
Questões de comandos SQL foram feitas para não acertar. Não são simples. Enfim, tomara que ajude.
select A, count(*) -- selecione a coluna A bem como a somatório dos registros nulos e não nulos
from IMB -- da tabela IMB
where A is not NULL -- inclua somente as linhas que os valores de A não sejam nulos
group by A -- se houver valores repetidos de A, agrupe-os
having sum(B) > 2 -- no resultado final exclua do registros em que o somatório de B seja maior que 2.
SQL - STRUCTURED QUERY LANGUAGE
- Linguagem que serve para extrarir (consultar) os dados em um SGBD, mas também ralizar TODO o gerenciamento do sistema;
---
Fonte: Arthur Mendonça, Direção | https://app.qconcursos.com/cursos/1/capitulos/628158
DQL - LINGUAGEM DE CONSULTA
- Usando o comando SELECT, podemos extrarir os dados de uma ou mais tabelas;
- Primeiro, especificamos quais colunas (ou atributos) queremos ver;
- Se quisermos consultar todas as colunas envolvidas na consulta, devemos colocar um asterisco (*) no lugar dos nomes das colunas:
SELECT *
FROM Funcionario
---
Fonte: Arthur Mendonça, Direção | https://app.qconcursos.com/cursos/1/capitulos/628159
DQL
Estrutura básica de um comando DQL:
- SELECT → O quê (quais colunas)
- FROM → De onde? (quais tabelas envolvidas)
- WHERE → Com que condições? (filtros)
Equivalências com as operações da álgebra relacional:
- SELECT → Projeção
- FROM → Produto cartesiano
- WHERE → Seleção
NOTAS:
- O comando SELECT pode ser combinado com o termo DISTINCT par retornar somente as tuplas únicas (não repetidas);
---
Fonte: Arthur Mendonça, Direção | https://app.qconcursos.com/cursos/1/capitulos/628163
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo