如何查询数据库中计数器读数为0的所有对应时间戳记录
问题描述
我有一个存储机器每分钟采集数据的数据库,包含timestamp(时间戳)和机器计数器读数字段,每分钟生成一条记录。我需要编写查询语句,展示所有计数器读数为0的行对应的时间戳。
原始样例数据
| datetime | m00 |
|---|---|
| 2021-11-03 10:00 | 10 |
| 2021-11-03 10:01 | 9 |
| 2021-11-03 10:02 | 0 |
| 2021-11-03 10:03 | 8 |
| 2021-11-03 10:04 | 10 |
| 2021-11-03 10:05 | 0 |
| 2021-11-03 10:06 | 10 |
| 2021-11-03 10:07 | 10 |
预期结果1:所有计数为0的行
| datetime | m00 |
|---|---|
| 2021-11-03 10:02 | 0 |
| 2021-11-03 10:05 | 0 |
预期结果2:所有计数非0的行
| datetime | m00 |
|---|---|
| 2021-11-03 10:00 | 10 |
| 2021-11-03 10:01 | 9 |
| 2021-11-03 10:03 | 8 |
| 2021-11-03 10:04 | 10 |
| 2021-11-03 10:06 | 10 |
| 2021-11-03 10:07 | 10 |
解决方案
以下查询语句默认表名为machine_data,使用时请替换为你的实际表名:
查询所有计数器为0的行(对应预期结果1)
SELECT datetime, m00 FROM machine_data WHERE m00 = 0;
如果仅需要返回时间戳字段,修改SELECT部分即可:
SELECT datetime FROM machine_data WHERE m00 = 0;
查询所有计数器非0的行(对应预期结果2)
SELECT datetime, m00 FROM machine_data WHERE m00 != 0; -- 部分SQL方言中也可写作 WHERE m00 <> 0,兼容性更高
内容的提问来源于stack exchange,提问作者Manjunath Satyamurthy
相关产品推荐
相关产品推荐

