sql - SQL 使用 0 行 from where 0 rows to group by 而不是什么都没有
问题描述
这是我的桌子
我正在使用下一个查询
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 行,因为它不知道它存在但是获得预期结果的方法是什么?我不知道...
谢谢
解决方案
您只需要条件聚合:
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;
推荐阅读
- javascript - 如何在反应中加载自定义prismjs语法文件?
- regex - Hive regexp_replace
- c# - Xamarin.Forms - 如何制作点击计数器?
- aws-amplify - AWS Amplify 构建过程中的缓存工件是什么?
- c++ - 在函数 'int main(int, char**) 中,未声明 'MIN'
- java - spring boot API - 文档处理并在文档上并行执行python脚本
- c# - 更改 Blazor 文件夹给我“找不到回退端点”
- html - 如何将导航栏搜索路由到特定的索引视图?
- python - tkinter:使用 pack_forget 然后再次使用 pack(),它会打包在不同的位置
- php - Laravel Queue SerializesModels Trait 删除相关值