根据deviceID和monKey作为唯一键, 查询device_monitor_attr_his表,按数量降序排序,sql怎么写
时间: 2024-02-27 18:54:52 浏览: 83
以下是查询语句:
```sql
SELECT deviceID, monKey, COUNT(*) AS count
FROM device_monitor_attr_his
GROUP BY deviceID, monKey
ORDER BY count DESC;
```
这条SQL语句使用`GROUP BY`对`deviceID`和`monKey`进行分组,并使用`COUNT(*)`函数计算每个组的数量。最后使用`ORDER BY`按数量降序排序结果。
相关问题
CREATE TABLE `device_monitor_attr_his` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `deviceID` bigint(20) NOT NULL COMMENT '设备主键', `monKey` varchar(32) NOT NULL COMMENT '监控量', `monValue` varchar(500) NOT NULL COMMENT '监控值', `createTime` datetime NOT NULL, PRIMARY KEY (`id`), KEY `index_deviceID` (`deviceID`) ) ENGINE=InnoDB AUTO_INCREMENT=16924951 DEFAULT CHARSET=utf8; mysql 根据deviceID,monkey,createTime统计device_monitor_attr_his表的平均值 sql怎么写
您好,根据您的需求,可以使用以下 SQL 语句查询 device_monitor_attr_his 表中指定 deviceID、monKey 和 createTime 条件下的监控值的平均值:
```
SELECT AVG(CAST(monValue AS DECIMAL(10,2))) AS avg_value
FROM device_monitor_attr_his
WHERE deviceID = 'your_deviceID' AND monKey = 'your_monKey' AND createTime BETWEEN 'start_time' AND 'end_time';
```
其中,AVG 函数用于计算指定列的平均值;CAST 函数将字符串类型的 monValue 转换成 DECIMAL 类型,以便计算平均值。
请替换 SQL 语句中的 your_deviceID、your_monKey、start_time 和 end_time 为您实际需要查询的条件值。
查询device_monitor_attr_his表1月,3月,4月,5月,8月的数据 sql怎么写
可以使用以下 SQL 语句查询 `device_monitor_attr_his` 表中 1 月、3 月、4 月、5 月和 8 月的数据:
```
SELECT *
FROM device_monitor_attr_his
WHERE MONTH(record_time) IN (1, 3, 4, 5, 8);
```
这里使用了 SQL 函数 `MONTH()` 来获取 `record_time` 字段的月份,然后使用 `IN` 运算符来筛选出指定月份的数据。
阅读全文