Com relação à tabela, analise o comando SQL a seguir.     ...

Próximas questões
Com base no mesmo assunto
Q1846179 Banco de Dados

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.

Alternativas

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:

  1. O valor A = 2 é filtrado fora porque tem um NULL em B e, portanto, não contribui para a soma.
  2. O valor A = 3 tem apenas uma linha com B = 3, logo a soma e a contagem são ambas 1.
  3. 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.
  4. 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.
  5. 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