分组后再子集再查询

【问题】

有如下查询结果

从这里面查询每个产品 (ProductID) 具有某个(或同时具有某几个)属性 (即 AttID) 的产品数量,并按 ClassID 分组
如果只查询某个产品具有单个属性的话,可以用如下 SQL,如下面查询具有 AttID 为 1 的所有产品:

Java code

SELECTclassid,COUNT(ProductID)AS数量
FROMView\_mf\_ProductListWHERE(AttID=1)GROUPBYClassID

classid数量  
----------------------------  
132  
141  

如果查询的产品同时具有多个属性,比如同时具有 AttID 为 1 并且 AttID 为 2 时,上面的 SQL 就会出问题。
下面是正确的查询结果,请问怎样写 SQL 能得到下面的结果集呢?

classid数量  
----------------------------  
131  
140

【回答】

分组子集的运算,数据量不大时读出来处理要简单些,用 SPL 只要一句就可以:

A
1$select distinct ClassID,ProductID,AttID from tb where AttID in(1,2)
2=A1.group(ClassID;~.group(ProductID).count(~.len()==2):数量)

A1:使用 SQL 取表中数据

A2:通过 group 进行分组聚合计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值