Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Sql 获取GROUP BY记录子集的计数_Sql_Sql Server_Count_Subquery - Fatal编程技术网

Sql 获取GROUP BY记录子集的计数

Sql 获取GROUP BY记录子集的计数,sql,sql-server,count,subquery,Sql,Sql Server,Count,Subquery,我有一个邮件分类账表,我正试图查询返回百分比。我正在进行分组,根据订单号、县和邮政编码获取唯一记录 SELECT, COUNT(*) as TotalMailed, COUNT(*) (WHERE Returned = 1) as ReturnedMailed, Order_No, Zip_Code,County FROM MailLedger GROUP BY Order_No, Zip_Code, County 我正在获得每个记录分组的正确计数,但是我需要获得已返回true的分组记录子集的

我有一个邮件分类账表,我正试图查询返回百分比。我正在进行分组,根据订单号、县和邮政编码获取唯一记录

SELECT, COUNT(*) as TotalMailed, COUNT(*) (WHERE Returned = 1) as ReturnedMailed, Order_No, Zip_Code,County
FROM MailLedger
GROUP BY Order_No, Zip_Code, County
我正在获得每个记录分组的正确计数,但是我需要获得已返回true的分组记录子集的计数


我运行的是SQL Server,所以我可以使用OVER和PARTITION,但是,我也想知道在Postgres/MySQL中处理它的正确方法。

在SQL Server中,可以使用条件聚合。我通常使用
SUM(CASE…)

如果返回的
值仅为1和0/
NULL
,则可以执行以下操作:

SELECT COUNT(*) as TotalMailed,
       SUM(Returned) as ReturnedMailed,
       Order_No, Zip_Code, County
FROM MailLedger
GROUP BY Order_No, Zip_Code, County;

在SQL Server中,可以使用条件聚合。我通常使用
SUM(CASE…)

如果返回的
值仅为1和0/
NULL
,则可以执行以下操作:

SELECT COUNT(*) as TotalMailed,
       SUM(Returned) as ReturnedMailed,
       Order_No, Zip_Code, County
FROM MailLedger
GROUP BY Order_No, Zip_Code, County;
使用
COUNT(返回时的大小写=1,然后结束)
使用
COUNT(返回时的大小写=1,然后结束)