You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CnosDB中按天计算平均温度?SQL编写方法咨询

按天汇总平均温度的SQL写法

核心逻辑是将时间戳字段转换为仅包含年月日的日期格式,再按该日期分组,计算每组的温度平均值。不同数据库的日期处理函数略有差异,以下是常用数据库的实现方式:

MySQL/MariaDB

使用DATE()函数提取时间戳的日期部分:

SELECT DATE(time) AS date, AVG(temperature) AS avg_temperature
FROM air
GROUP BY DATE(time);

PostgreSQL

可以用DATE_TRUNC()截断到天,或直接将时间戳转为日期类型:

-- 方式1:用DATE_TRUNC
SELECT DATE_TRUNC('day', time)::DATE AS date, AVG(temperature) AS avg_temperature
FROM air
GROUP BY DATE_TRUNC('day', time);

-- 方式2:直接转换为日期
SELECT CAST(time AS DATE) AS date, AVG(temperature) AS avg_temperature
FROM air
GROUP BY CAST(time AS DATE);

SQL Server

使用CONVERT()或CAST()将时间戳转为日期:

-- 方式1:CONVERT
SELECT CONVERT(date, time) AS date, AVG(temperature) AS avg_temperature
FROM air
GROUP BY CONVERT(date, time);

-- 方式2:CAST
SELECT CAST(time AS date) AS date, AVG(temperature) AS avg_temperature
FROM air
GROUP BY CAST(time AS date);

Oracle

使用TRUNC()函数将时间戳截断到天:

SELECT TRUNC(time, 'DD') AS date, AVG(temperature) AS avg_temperature
FROM air
GROUP BY TRUNC(time, 'DD');

注意事项

  • 确保time字段为datetime/timestamp类型,temperature为数值类型(如INT/FLOAT),否则AVG()函数无法正常计算。
  • 如果temperature存在NULL值,AVG()会自动忽略这些值;若需将NULL视为特定值(如0),可使用AVG(COALESCE(temperature, 0))。

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:42:11