我的记录很少,我想创建一个查询来提供每个潜水电池级别的每小时记录
我从时间戳字段做了什么我提取日期并选择min函数以获得低值但是从时间戳开始的提取小时不是aggragate函数所以我需要添加组,现在给我重复记录。 这是我的sql:
select extract(hour from observationtime) as hour,
deviceid,
min(batterylevel) as batterylevel
from smartvakt_device_report
where batterylevel!=''
and deviceid!=''
and observationtime between '2016-02-02' and '2016-03-02'
group by observationtime,deviceid
order by observationtime ASC, deviceid ASC
有人可以建议我如何删除这些重复的
答案 0 :(得分:0)
由于您只对小时感兴趣,因此在进行分组时,您必须表明这样
group by extract(hour from observationtime)
否则,postgresql
会尝试将observationtime
值相同的行组合在一起。但是observationtime
包含完整分辨率的时间,而不仅仅是小时。
答案 1 :(得分:0)
按列顺序更改分组,按deviceid
分组,然后hour
使用相同的功能extract(hour from observationtime)
。
SELECT
deviceid,
extract(hour from observationtime) AS hour,
min(batterylevel) AS batterylevel
FROM smartvakt_device_report
WHERE
batterylevel!=''
AND deviceid!=''
AND observationtime BETWEEN '2016-02-02'
AND '2016-03-02'
GROUP BY
deviceid,
extract(hour from observationtime)
ORDER BY
extract(hour from observationtime) ASC,
deviceid ASC