Firebird 2.5中统计指定日期内非0状态设备的事件数
解决方案
直接使用分组聚合查询即可实现需求,Firebird 2.5完全支持该语法:
SELECT RPRID, COUNT(*) AS ERRORCOUNT FROM RPR_HISTORY WHERE LASTRES <> 0 AND TSTAMP >= :STARTSTAMP GROUP BY RPRID ORDER BY RPRID;
关键说明:
GROUP BY RPRID:将相同RPRID的记录归为一组,确保每个设备ID只返回一行结果COUNT(*):统计每组内满足LASTRES <> 0和时间范围条件的记录总数,也就是该设备的非0状态事件数AS ERRORCOUNT:给统计列指定别名,与你期望的输出格式完全匹配- 可选的
ORDER BY RPRID:让结果按设备ID排序,和示例格式保持一致
你之前用DISTINCT只能去重获取设备ID,但无法完成聚合统计。分组查询是这类按维度统计需求的标准写法,只要保证SELECT子句中的列要么是GROUP BY的分组字段,要么是聚合函数(比如COUNT、SUM等),就不会出现分组错误。
内容的提问来源于stack exchange,提问作者SteveS
相关产品推荐
相关产品推荐

