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,然后结束)