Sql 将一个表与另一个表的计数结果进行比较,并添加计数为零的名称
我正在计算一家公司订购了多少次。那么,我只显示如果一家公司订购少于5次。然后,我将其与包含所有公司名称的表进行核对,以查看哪些公司没有订购,哪些公司不会显示在订单表上,然后将其名称添加到显示的列表中。 我所尝试的:Sql 将一个表与另一个表的计数结果进行比较,并添加计数为零的名称,sql,sql-server,Sql,Sql Server,我正在计算一家公司订购了多少次。那么,我只显示如果一家公司订购少于5次。然后,我将其与包含所有公司名称的表进行核对,以查看哪些公司没有订购,哪些公司不会显示在订单表上,然后将其名称添加到显示的列表中。 我所尝试的: Select Orders.CustomerID, Count(Orders.CustomerID) AS OrderCount From Orders Left Join Customers On Orders.CustomerID = Customers.Cust
Select Orders.CustomerID, Count(Orders.CustomerID) AS OrderCount
From Orders Left Join Customers
On Orders.CustomerID = Customers.CustomerID
Group By Orders.CustomerID
Having Count(Orders.CustomerID) <5
选择Orders.CustomerID,Count(Orders.CustomerID)作为OrderCount
从左订单加入客户
On Orders.CustomerID=Customers.CustomerID
按订单分组。CustomerID
拥有Count(Orders.CustomerID)如果要使用左联接
,请交换表名,因为您要显示客户
的值,否则请使用右联接
SELECT Customers.CustomerID,
COUNT(Orders.CustomerID) AS OrderCount
FROM Customers
LEFT JOIN Orders
ON Orders.CustomerID = Customers.CustomerID
GROUP BY Customers.CustomerID
HAVING COUNT(Orders.CustomerID) < 5
试试这个:
SELECT C.CustomerID, C.CustomerName, COUNT(O.CustomerID) AS OrderCount
FROM Customers C
LEFT JOIN Orders O ON O.CustomerID = C.CustomerID
GROUP BY C.CustomerID
HAVING OrderCount < 5
ORDER BY OrderCount, C.CustomerName
选择C.CustomerID、C.CustomerName、COUNT(O.CustomerID)作为OrderCount
来自客户C
O.CustomerID=C.CustomerID上的左连接订单O
按C.CustomerID分组
订单数量小于5的
按订单数量排序,C.客户名称
我尝试了这个方法,但没有得到正确的结果。它缺少2个根本没有订购的客户。它只返回了一个空行作为客户名称。也许你应该看到更新的答案,如果可能的话,添加示例记录。左连接起作用了,我注意到我的措辞中有一个额外的字符,通过它的扳手。一件小事能做什么。顺便问一下,你用的是什么服务器?sql server或mysql?sql server和管理研究请不要鼓励在HAVING
子句上使用别名。它不是标准的,它只在mysql中工作。您的问题被标记为(一个跨平台的开源RDBMS,现在归Oracle所有)和(一个专有的、来自Microsoft的封闭源代码RDBMS)。你用哪一种?
SELECT CustomerID
FROM Customers c
WHERE EXISTS
(
SELECT 1
FROM Orders o
WHERE o.CustomerID = c.CustomerID
GROUP BY CustomerID
HAVING COUNT(CustomerID) < 5
)
SELECT C.CustomerID, C.CustomerName, COUNT(O.CustomerID) AS OrderCount
FROM Customers C
LEFT JOIN Orders O ON O.CustomerID = C.CustomerID
GROUP BY C.CustomerID
HAVING OrderCount < 5
ORDER BY OrderCount, C.CustomerName