附加帮助 Northwind 示例 SQL
additional help Northwind Example SQL
我对 Northwind
SQL 服务器示例数据库有疑问,但我不知道如何解决
为所有订单中至少拥有三种不同产品但从未订购同一类别的 2 种产品的所有客户显示 CustomerID
。
我不知道怎么查"but never ordered 2 products from the same category"
请帮助我:)
我为这个问题试过的代码:
SELECT
c.CustomerID,COUNT(DISTINCT p.ProductID)
FROM
Customers c
JOIN
Orders o ON o.CustomerID = c.CustomerID
JOIN
[Order Details] od ON od.OrderID = o.OrderID
JOIN
Products p ON p.ProductID = od.ProductID
GROUP BY
c.CustomerID
HAVING
COUNT(DISTINCT p.ProductID) >= 3
我已经在这些查询上停留了几个小时,请大家帮忙!
这是 link 用于 Northwind
示例数据库:https://northwinddatabase.codeplex.com/
如果每个订单必须来自不同的类别,则 COUNT(product) 应与 COUNT(category) 相同。这是从逻辑上处理它的一种方法,但毫无疑问还有其他解决方案。
再添加一个条件来检查不同产品的数量是否等于不同类别的数量。这样可以确保每个类别始终只有一种产品。
SELECT
c.CustomerID,COUNT(DISTINCT p.ProductID), count(distinct c.categoryid)
FROM Customers c
JOIN Orders o ON o.CustomerID = c.CustomerID
JOIN [Order Details] od ON od.OrderID = o.OrderID
JOIN Products p ON p.ProductID = od.ProductID
GROUP BY c.CustomerID
HAVING COUNT(DISTINCT p.ProductID) >= 3
and count(distinct c.categoryid) = COUNT(DISTINCT p.ProductID)
我对 Northwind
SQL 服务器示例数据库有疑问,但我不知道如何解决
为所有订单中至少拥有三种不同产品但从未订购同一类别的 2 种产品的所有客户显示 CustomerID
。
我不知道怎么查"but never ordered 2 products from the same category"
请帮助我:) 我为这个问题试过的代码:
SELECT
c.CustomerID,COUNT(DISTINCT p.ProductID)
FROM
Customers c
JOIN
Orders o ON o.CustomerID = c.CustomerID
JOIN
[Order Details] od ON od.OrderID = o.OrderID
JOIN
Products p ON p.ProductID = od.ProductID
GROUP BY
c.CustomerID
HAVING
COUNT(DISTINCT p.ProductID) >= 3
我已经在这些查询上停留了几个小时,请大家帮忙!
这是 link 用于 Northwind
示例数据库:https://northwinddatabase.codeplex.com/
如果每个订单必须来自不同的类别,则 COUNT(product) 应与 COUNT(category) 相同。这是从逻辑上处理它的一种方法,但毫无疑问还有其他解决方案。
再添加一个条件来检查不同产品的数量是否等于不同类别的数量。这样可以确保每个类别始终只有一种产品。
SELECT
c.CustomerID,COUNT(DISTINCT p.ProductID), count(distinct c.categoryid)
FROM Customers c
JOIN Orders o ON o.CustomerID = c.CustomerID
JOIN [Order Details] od ON od.OrderID = o.OrderID
JOIN Products p ON p.ProductID = od.ProductID
GROUP BY c.CustomerID
HAVING COUNT(DISTINCT p.ProductID) >= 3
and count(distinct c.categoryid) = COUNT(DISTINCT p.ProductID)