Dê os nomes dos funcionários que vendem produtos de mais de 10 fornecedores

Anon

Estou achando difícil escrever a consulta para a pergunta acima. Eu escrevi a seguinte consulta, mas ela está retornando todas as linhas

SELECT e.EmployeeID 
FROM employees e 
JOIN orders o ON e.EmployeeID = o.EmployeeID 
JOIN order_details od ON o.OrderID = od.OrderID 
JOIN Products p ON od.ProductID = p.ProductID 
GROUP BY e.EmployeeID 
HAVING COUNT(p.SupplierID) > 10
Gordon Linoff

Sua condição de filtragem é:

HAVING COUNT(p.SupplierID) > 10

COUNT()conta o número de não NULLvalores. Presumivelmente, todos os produtos têm um fornecedor e você está usando junções internas. Portanto, todas as linhas correspondentes são contadas. É equivalente a:

HAVING COUNT(*) > 10

E isso conta o número de linhas de pedido de um determinado funcionário.

Você deseja contar fornecedores distintos , não linhas de pedidos. O método mais simples é usar COUNT(DISTINCT):

HAVING COUNT(DISTINCT p.SupplierID) > 10

Como você está aprendendo SQL, recomendo que você também entenda esta versão:

SELECT e.EmployeeID
FROM (SELECT e.EmployeeID, p.SupplierID, COUNT(*) as num_ordelines
      FROM employees e JOIN
           orders o
           ON e.EmployeeID = o.EmployeeID JOIN
           order_details od
           ON o.OrderID = od.OrderID JOIN
           Products p
           ON od.ProductID = p.ProductID 
      GROUP BY e.EmployeeID, p.SupplierId
     ) es 
GROUP BY EmployeeID
HAVING COUNT(SupplierID) > 10

Isso retorna o mesmo conjunto de resultados (assumindo que SupplierIdnunca NULL). A subconsulta possui uma linha por funcionário / fornecedor. A consulta externa então conta essas linhas.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Encontre os nomes dos funcionários que foram contratados no mês de fevereiro na tabela a seguir

SQL: forneça os nomes dos funcionários que ganham mais do que seu gerente

Consulta que seleciona os nomes de todos os funcionários e os nomes de seus chefes

Woocommerce - Classifique os produtos no carrinho por autor / usuário na configuração de vários fornecedores

Colocando os nomes dos fornecedores em uma caixa de combinação usando o Dapper

Faça valores binários a partir dos 2 nomes de coluna principais que têm os valores mais altos de muitos nomes de coluna em SQL

Faça valores binários a partir dos 2 nomes de coluna principais que têm os valores mais altos de muitos nomes de coluna em SQL

Impedir que os clientes façam pedidos de mais de 3 fornecedores no Woocommerce

Mostra a lista de todos os nomes de produtos pedidos junto com os nomes e sobrenomes dos clientes

Mostra a lista de todos os nomes de produtos pedidos junto com os nomes e sobrenomes dos clientes

Usuários de SQL que pedem mais de n produtos

Encontre os nomes dos fornecedores que fornecem todas as peças no MS Access

Extrair os nomes dos arquivos mais recentes de um caminho

Como encontrar todos os funcionários que contêm todas as sequências de caracteres em seus nomes?

Como posso gerenciar os representantes de vendas que vendem pedidos especiais no BlueSnap?

Obtenha todos os pares de números de fornecedores, de modo que dois fornecedores estejam colocados

Sylius no modo de catálogo de produtos de vários fornecedores

Por que Reactjs está exibindo todos os nomes completos dos usuários de uma vez

Nomes exclusivos com departamento de funcionários

Como aplicar as mesmas funções (que usam os nomes dos arquivos) em mais conjuntos de dados em R

Soma dos produtos de todos os subconjuntos,

Como obter os nomes de todos os produtos?

Como podemos descobrir que os funcionários já tiraram férias de um ano fiscal ou apenas mais?

Consulta para contar funcionários e exibir departamentos que têm mais de um funcionário

Eu tenho uma classe de funcionários que gostaria de retornar uma lista de 'nomes'

como armazenar todos os nomes de funcionários em uma única caixa de texto

Liste todos os produtos que nunca venderam um único item. Mostrar apenas os nomes dos produtos

Os nomes de captura de funcionários que efetuam login e logout nas células estão vazios usando o loop for

pandas recebendo os nomes mais frequentes de uma coluna que contém uma lista de nomes

TOP lista

quentelabel

Arquivo