SQL使用0行从何处作为0行分组,而不是不分组

SQL使用0行从何处作为0行分组,而不是不分组,sql,group-by,count,Sql,Group By,Count,这是我的桌子 我正在使用下一个查询 SELECT XFailTbl.id, xfail, yfail FROM (SELECT Count(*) AS XFail, [id] FROM [table] WHERE ( x < xmin OR x > xmax ) GROUP BY [id]) AS XFail

这是我的桌子

我正在使用下一个查询

    SELECT XFailTbl.id, 
       xfail, 
       yfail 
FROM   (SELECT Count(*) AS XFail, 
               [id] 
        FROM   [table] 
        WHERE  ( x < xmin 
                  OR x > xmax ) 
        GROUP  BY [id]) AS XFailTbl 
       JOIN (SELECT Count(*) AS YFail, 
                    [id] 
             FROM   [table] 
             WHERE  ( y < ymin 
                       OR y > ymax ) 
             GROUP  BY [id]) AS YFailTbl 
         ON XFailTbl.id = YFailTbl.id 
我得到了下一个结果

我的预期结果是

我知道我不能使用YYMax的条件,因为我将0行发送给group by,而它无法计算0行,因为它不知道它存在 但是怎样才能得到预期的结果呢?我不知道


谢谢

您只需要条件聚合:

select id,
       sum(case when X < Xmin or X > XMax then 1 else 0 end) as xfail,
       sum(case when Y < Ymin or Y > YMax then 1 else 0 end) as yfail
from
group by id;

您只需要条件聚合:

select id,
       sum(case when X < Xmin or X > XMax then 1 else 0 end) as xfail,
       sum(case when Y < Ymin or Y > YMax then 1 else 0 end) as yfail
from
group by id;