问题描述
我正在尝试查找具有仅饮料项目的fact_order_id。这将使fact_order_id不包含任何食品。
fact_order_id
fact_order_line_id
category Group
category Name
我在下面使用了2个单独的SQL查询。当我回去检查工作时,我发现输出不是仅饮料的订单中有一些fact_order_id。这是给我相同输出的2个单独的SQL查询:
select fact_order_id
from my_table
group by fact_order_id
having avg((category_group like 'Beverage%')::int) = 1;
select fact_order_id
from my_table
group by fact_order_id
having avg(CASE WHEN category_group like 'Beverage%' THEN 1 ELSE 0 END)=1;
以上两个输出都给我相同的行数。每当我交叉检查fact_order_id时,其中一些都会包含带有食品的输出。
由于该订单上还有其他非饮料类物品,因此我的输出中不应包含此fact_order_id。有2个具有饮料名称的类别组(饮料(非酒精)和饮料(专业))。是否有更好的方法来创建SQL查询,使其仅输出仅饮料订单的fact_order_id?
我正在使用Postgresql版本:08.00.0002
解决方法
根据PostgreSQL的年龄,您可以尝试一下吗?
const net = await posenet.load({
architecture: "MobileNetV1",outputStride: 16,inputResolution: {width: 360,height: 640},multiplier: 0.75
});
this.Pose = await net.estimateSinglePose(imageElement);
net.dispose();
return this.Pose;
根据您的评论,可以请您尝试这个查询并分享您的结果吗?
select fact_order_id
from my_table
group by fact_order_id
having bool_and((category_group like 'Beverage%'));
您可以在检查中重新加入表中,以查看是否存在问题。从SQL的角度来看,以下查询是毫无意义的,但它将自动进行交叉检查:
select fact_order_id,category_group,category_name,(category_group like 'Beverage%') as is_beverage
from my_table
where fact_order_id = '1 292 757'
,
如何排除您不知道的fact_order_id?
select distinct fact_order_id
from my_table
where fact_order_id not in (
select distinct fact_order_id
from my_table
where not category_group like 'Beverage%'
);