如何执行条件计数?
How to perform a conditional count?
我需要一些帮助来解决一个非常具体的问题(我是这么认为的),我希望它是可以解决的。
我有一个 table 看起来像这样:
cdts
vehicle
device
20211101
car1
deviceX
20211101
car1
deviceY
20211101
car1
deviceZ
20211101
car2
deviceX
20211101
car2
deviceY
20211101
car3
deviceX
20211101
car3
deviceY
20211102
car1
deviceX
20211102
car1
deviceY
20211102
car2
deviceZ
20211102
car2
deviceX
20211102
car2
deviceY
20211102
car3
deviceX
20211102
car3
deviceY
我需要获取一份列表,了解一辆汽车拥有 2 台设备或 3 台设备的频率,因此它应该如下所示:
vehicle
2 Devices
3 Devices
car1
1
1
car2
1
1
car3
2
0
我真的不知道该怎么做。我是否需要子查询,我可以使用 where 子句执行 count() 吗?
select vehicle
, sum(case when devicecount = 2 then 1 else 0 end) [2Devices]
, sum(case when devicecount = 3 then 1 else 0 end) [3Devices]
from (
select vehicle, count(device) devicecount
from table
group by vehicle,cdts
) t group by vehicle
我需要一些帮助来解决一个非常具体的问题(我是这么认为的),我希望它是可以解决的。
我有一个 table 看起来像这样:
cdts | vehicle | device |
---|---|---|
20211101 | car1 | deviceX |
20211101 | car1 | deviceY |
20211101 | car1 | deviceZ |
20211101 | car2 | deviceX |
20211101 | car2 | deviceY |
20211101 | car3 | deviceX |
20211101 | car3 | deviceY |
20211102 | car1 | deviceX |
20211102 | car1 | deviceY |
20211102 | car2 | deviceZ |
20211102 | car2 | deviceX |
20211102 | car2 | deviceY |
20211102 | car3 | deviceX |
20211102 | car3 | deviceY |
我需要获取一份列表,了解一辆汽车拥有 2 台设备或 3 台设备的频率,因此它应该如下所示:
vehicle | 2 Devices | 3 Devices |
---|---|---|
car1 | 1 | 1 |
car2 | 1 | 1 |
car3 | 2 | 0 |
我真的不知道该怎么做。我是否需要子查询,我可以使用 where 子句执行 count() 吗?
select vehicle
, sum(case when devicecount = 2 then 1 else 0 end) [2Devices]
, sum(case when devicecount = 3 then 1 else 0 end) [3Devices]
from (
select vehicle, count(device) devicecount
from table
group by vehicle,cdts
) t group by vehicle