MySQL中如何统计关联列对应的所有机器硬件组件总数量
统计全量硬件组件总数量
因为同一个硬件组件会多次上报状态数据,统计时必须对唯一组件标识hw_id去重,才能得到真实的组件总数,查询语句如下:
SELECT COUNT(DISTINCT hw_id) AS total_gpu_components FROM hardware WHERE $__unixEpochFilter(time) AND component = 'gpu'
执行后返回的total_gpu_components就是你需要的总数量,你当前场景下会返回9。
其他常用统计场景
如果需要同时查询上报明细和总组件数,可以用窗口函数实现:
SELECT time AS "time", machine_id, hw_id, COUNT(DISTINCT hw_id) OVER() AS total_gpu_components FROM hardware WHERE $__unixEpochFilter(time) AND component = 'gpu' ORDER BY time
如果需要按机器维度统计每台机器的组件数量,使用分组查询即可:
SELECT machine_id, COUNT(DISTINCT hw_id) AS gpu_count_per_machine FROM hardware WHERE $__unixEpochFilter(time) AND component = 'gpu' GROUP BY machine_id
内容的提问来源于stack exchange,提问作者etherion
相关产品推荐
相关产品推荐

