SELECT dev_name, COUNT(dev_name) AS 设备总数 COUNT( CASE WHEN device_status LIKE '%1%' THEN 1 ELSE NULL END ) AS 在线设备, COUNT( CASE WHEN device_status LIKE '%2%' THEN 1 ELSE NULL END ) AS 离线设备 FROM `unify_data_parking`.`dwd_parking_device` GROUP BY dev_name HAVING COUNT(dev_name)>1
时间: 2024-02-24 08:55:20 浏览: 20
这是一个SQL查询语句,目的是查询 `dwd_parking_device` 表中每个设备名称(dev_name)下在线设备和离线设备的数量,以及该设备名称下的设备总数,同时只返回设备总数大于1的分组结果。
具体的查询语句如下:
```
SELECT dev_name,
COUNT(dev_name) AS 设备总数,
COUNT(CASE WHEN device_status LIKE '%1%' THEN 1 ELSE NULL END) AS 在线设备,
COUNT(CASE WHEN device_status LIKE '%2%' THEN 1 ELSE NULL END) AS 离线设备
FROM `unify_data_parking`.`dwd_parking_device`
GROUP BY dev_name
HAVING COUNT(dev_name) > 1;
```
这里使用了 `COUNT` 函数和 `CASE WHEN` 语句,来计算在线设备和离线设备的数量以及设备总数。`CASE WHEN` 语句用于判断设备状态是否为1或2,如果是,则返回1,否则返回NULL。`COUNT` 函数会忽略NULL值,只计算非空值的数量,因此可以统计在线设备和离线设备的数量。最后使用 `GROUP BY` 子句来按照设备名称进行分组,并使用 `HAVING` 子句只返回设备总数大于1的结果。