sql使用0行from where作为0行分组依据,而不是空

gywdnpxw  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(327)

这是我的table

我正在使用下一个查询

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

我得到了下一个结果

我的预期结果是

我明白我不能使用 (Y<Ymin OR Y>YMax) 因为我得到了0行到group by,它无法统计0行,因为它不知道它存在,但是怎样才能得到预期的结果呢?我不知道。。。
谢谢

8wigbo56

8wigbo561#

您只需要条件聚合:

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;

相关问题