在我的情况下,有一个名为ServiceCarrier的表,如下所示:
ServiceId CarrierId
1 1
2 1
4 1
1 2
2 2
5 2
1 20028
2 20028
5 20028
我想按CarrierId对其进行分组,并希望在分组的分组之间取得交集。 我的预期结果如下
ServiceId
1
2
答案 0 :(得分:0)
假设(serviceid
,carrierid
)是唯一的。 GROUP BY serviceid
并获得count(*)
。这将告诉您有多少家运营商提供该服务。由于只希望所有运营商提供的服务,因此请在HAVING
子句中限制结果,以仅保留其服务数量等于所有运营商的数量的服务。这表明所有运营商都提供了该服务。
SELECT serviceid
FROM elbat
GROUP BY serviceid
HAVING count(*) = (SELECT count(DISTINCT carrierid)
FROM elbat);
答案 1 :(得分:0)
要获得您所写的“期望”和“交集”,也许可以尝试一下?
从TSO中选择serviceID,其中serviceID = carrierID
例如,如果您想要汇总,计数或总和,也许可以尝试一下?
选择serviceID,count(carrierID)作为来自TSO的计数,其中 serviceID =运营商ID按serviceID分组