timestamp列平均值计算正确性验证及问题关闭咨询
问题解答
原问题:计算方式是否正确?
这段SQL在PostgreSQL中语法合法,但结果合理性需结合业务需求判断:
- PostgreSQL的
TIME类型底层以一天内的微秒数存储,AVG(timestamp::TIME)会先将每个时间转成对应微秒数值,计算平均值后再转回TIME格式,数据库本身支持这个计算逻辑。 - 若你的需求是忽略日期,仅统计同一地点每天的时间点平均值(比如统计门店日均开门时间),这个计算方式合理;但如果要统计跨多天的时间跨度平均值(比如设备连续运行的时间点平均),直接转
TIME会丢失日期信息,此时应把timestamp转成epoch秒数(EXTRACT(EPOCH FROM timestamp))计算平均,再转回时间戳,才能得到包含日期的真实平均。
对应的SQL代码:
SELECT loc_id, AVG(timestamp::TIME) FROM dept_cluster_raw group by loc_id
更新问题:是否需要关闭问题?
在Stack Exchange系列平台(含Stack Overflow),无需手动关闭问题:
- 若你自行找到解决方案,可以补充一个自我回答说明之前的误解点,再将该回答标记为「已采纳」;
- 若他人的回答帮你解决了问题,直接采纳对应最佳回答即可,系统会自动将问题标记为「已解决」状态。
内容的提问来源于stack exchange,提问作者analyst92
相关产品推荐
相关产品推荐

