有一个包含两列的表,carrier
我networktype
想选择运营商、网络类型以及恰好具有 2 个特定网络类型且没有其他网络类型的行数。所以给出下表
Carrier NetworkType Count
302720 WIFI_11B_G 2
31000 NONE 1
31000 WIFI_11B_G 72
ATT EDGE 4
ATT HSPA 757
ATT UMTS 98
ATT WIFI_11B_G 163,511
BELL HSPA 3
BELL LTE 16
BELL NONE 57
BELL WIFI_11B_G 5,866
CHINAMOBILE NONE 2
CHINAMOBILE WIFI_11B_G 37
它应该只返回:
31000 NONE 1
31000 WIFI_11B_G 72
CHINAMOBILE NONE 2
CHINAMOBILE WIFI_11B_G 37
这是我正在运行的查询
SELECT carrier, network_type, count(*) FROM mytable
GROUP BY carrier, network_type
HAVING SUM(CASE
WHEN network_type = 'NONE' THEN 1
WHEN network_type = 'WIFI_11B_G' THEN 1
ELSE 2
END) = 2
AND network_type IN ('NONE', 'WIFI_11B_G')
但它只返回恰好有 2 个计数的运营商!例如 302720 和 WIFI_11B_G 因为它只有 2 个计数,但它没有 NONE 类型。或中国移动没有但没有WIFI。
我认为我在有子句的正确轨道上,我想只用一个查询来解决这个问题,没有子查询。谢谢!