Mysql 使用聚合函数后如何获取计数
我正在使用Northwind示例数据库中的Orders表。可以在这里找到: 我正在努力寻找只使用shipperID 3的独特客户的数量。因此,如果同一个客户使用shipperID 1或shipperID 2,我不想将其添加到计数中 我知道我可以通过以下方式查询这些独特的客户: 选择CustomerID、ShipperID 从命令 按客户ID分组 具有不同的ShipperID=1和ShipperID=3的Mysql 使用聚合函数后如何获取计数,mysql,sql,count,aggregate-functions,Mysql,Sql,Count,Aggregate Functions,我正在使用Northwind示例数据库中的Orders表。可以在这里找到: 我正在努力寻找只使用shipperID 3的独特客户的数量。因此,如果同一个客户使用shipperID 1或shipperID 2,我不想将其添加到计数中 我知道我可以通过以下方式查询这些独特的客户: 选择CustomerID、ShipperID 从命令 按客户ID分组 具有不同的ShipperID=1和ShipperID=3的 但是,我不确定如何实际获得不同CustomerID的总数。谁能帮我一下吗?谢谢:从客户表中选
但是,我不确定如何实际获得不同CustomerID的总数。谁能帮我一下吗?谢谢:从客户表中选择,而不是从订单表中选择。该表中每个客户有一行,因此您可以更轻松地获得计数。您需要的条件是客户使用了ShipperID 3,而客户没有使用任何ShipperID 3。因此,有两个与Orders表相关的EXISTS条件
select count (distinct customerid) from (SELECT CustomerID , ShipperID
FROM Orders
GROUP BY CustomerID
HAVING COUNT(DISTINCT ShipperID)=1 and shipperid = 3) as data ;
SELECT COUNT(*)
FROM Customers
WHERE EXISTS (
SELECT *
FROM Orders
WHERE Orders.CustomerID = Customers.CustomerID
AND Orders.ShipperID = 3
) AND NOT EXISTS (
SELECT *
FROM Orders
WHERE Orders.CustomerID = Customers.CustomerID
AND Orders.ShipperID <> 3
)