A consulta SQL abaixo indica o número de produtos de cada lo...

Próximas questões
Com base no mesmo assunto
Q253105 Banco de Dados
A consulta SQL abaixo indica o número de produtos de cada loja.

select nome-loja, count (tipo-produto)
from produto
group by nome-loja

Se desejarmos eliminar as duplicações dos produtos, ou seja, cada tipo de produto contará apenas uma vez por loja, antes da função de agregação ser computada, devemos substituir a primeira linha por:

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C – select nome-loja, count (distinct tipo-produto)

Para entendermos o motivo pelo qual a alternativa C é a correta, precisamos abordar o conceito de agregação em SQL e o uso da cláusula DISTINCT. A cláusula GROUP BY é utilizada em uma consulta SQL para agrupar as linhas que têm os mesmos valores em colunas específicas. Isso é comumente empregado junto com funções de agregação, como COUNT(), SUM(), AVG(), entre outras, para resumir os dados.

Função COUNT(): Esta é uma função de agregação usada para contar o número de linhas que correspondem a um critério específico. Por padrão, o COUNT() conta todas as linhas, incluindo as duplicatas. No entanto, a nossa consulta deseja contar cada tipo de produto apenas uma vez por loja, mesmo que haja produtos duplicados.

Para realizar a contagem sem duplicatas, utilizamos a palavra-chave DISTINCT dentro da função COUNT(). A expressão COUNT(DISTINCT column_name) conta apenas os valores distintos (não duplicados) para a coluna especificada. Portanto, ao modificarmos a consulta original para:

select nome-loja, count(distinct tipo-produto)
from produto
group by nome-loja

Estamos instruindo o banco de dados a contar os diferentes tipos de produtos (tipo-produto) para cada loja (nome-loja), ignorando as repetições de produtos dentro de cada loja. Dessa forma, garantimos que cada tipo de produto seja contabilizado uma única vez por loja na nossa agregação.

As outras alternativas apresentam combinações de palavras-chave e funções que não são válidas ou que não produziriam o resultado desejado. Por exemplo, unique, only, exists não são funções ou cláusulas válidas para serem utilizadas com a função COUNT() em SQL para o propósito de eliminar duplicatas.

Portanto, a alternativa C é a única que utiliza corretamente a cláusula DISTINCT com a função COUNT() para contar os tipos de produtos distintos por loja, de acordo com o enunciado da questão.

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

Correta letra C.
De acordo com [1]:
"Nos casos em que queremos forçar a eliminação de duplicatas, inserimos a palavra-chave distinct após select."
[1] Silberschatz, Sistemas de Bancos de Dados, tradução da 5 edição, página 55.

1) SQL COUNT(*) Syntax
A COUNT(*) função retorna o número de registros em uma tabela.

Exemplo: SELECT COUNT(*) FROM table_name;

2) SQL COUNT(DISTINCT column_name) Syntax
A COUNT(DISTINCT column_name) funcão retorna o número, sem repetição, de valores de uma coluna especifica.

Exemplo: SELECT COUNT(DISTINCT column_name) FROM table_name;

c-

SQL COUNT() function with DISTINCT clause eliminates the repetitive appearance of the same data. The DISTINCT can come only once in a given select statement.

https://www.w3resource.com/sql/aggregate-functions/count-with-distinct.php

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo