Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用聚合函数后如何获取计数_Mysql_Sql_Count_Aggregate Functions - Fatal编程技术网

Mysql 使用聚合函数后如何获取计数

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的总数。谁能帮我一下吗?谢谢:从客户表中选

我正在使用Northwind示例数据库中的Orders表。可以在这里找到:

我正在努力寻找只使用shipperID 3的独特客户的数量。因此,如果同一个客户使用shipperID 1或shipperID 2,我不想将其添加到计数中

我知道我可以通过以下方式查询这些独特的客户:

选择CustomerID、ShipperID 从命令 按客户ID分组 具有不同的ShipperID=1和ShipperID=3的


但是,我不确定如何实际获得不同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
)