如何解决SQL:仅从组中获取最后一个元素
获得了一个SQL stmt,在其中获得了带有最后一次测量的加热时间和时间戳的加热元素。
SELECT
ts_diff,name,s_per_deg,CAST(dates.gen_date AS DATE) AS gen_date
FROM
heat_data
RIGHT JOIN
dates
ON
dates.gen_date = DATE(ts)
WHERE name != ''
ORDER BY gen_date DESC
此刻我的输出是
ts_diff name s_per_deg gen_date
202 HeatingElement6HeatTime 33.667 16.08.2020
205 HeatingElement4HeatTime 34.167 16.08.2020
205 HeatingElement5HeatTime 34.167 16.08.2020
208 HeatingElement7HeatTime 34.667 16.08.2020
226 HeatingElement2HeatTime 37.667 16.08.2020
199 HeatingElement6HeatTime 33.167 09.08.2020
202 HeatingElement4HeatTime 33.667 09.08.2020
204 HeatingElement5HeatTime 34.000 09.08.2020
206 HeatingElement7HeatTime 34.333 09.08.2020
223 HeatingElement2HeatTime 37.167 09.08.2020
206 HeatingElement5HeatTime 34.333 07.08.2020
209 HeatingElement7HeatTime 34.833 07.08.2020
228 HeatingElement2HeatTime 38.000 07.08.2020
202 HeatingElement6HeatTime 33.667 07.08.2020
205 HeatingElement4HeatTime 34.167 07.08.2020
198 HeatingElement6HeatTime 33.000 02.08.2020
204 HeatingElement7HeatTime 34.000 02.08.2020
202 HeatingElement5HeatTime 33.667 02.08.2020
201 HeatingElement4HeatTime 33.500 02.08.2020
223 HeatingElement2HeatTime 37.167 02.08.2020
200 HeatingElement6HeatTime 33.333 26.07.2020
203 HeatingElement4HeatTime 33.833 26.07.2020
203 HeatingElement5HeatTime 33.833 26.07.2020
206 HeatingElement7HeatTime 34.333 26.07.2020
223 HeatingElement2HeatTime 37.167 26.07.2020
我正在尝试仅获取每个元素的最后一个度量,所以我的结果应如下所示:
ts_diff name s_per_deg gen_date
202 HeatingElement6HeatTime 33.667 16.08.2020
205 HeatingElement4HeatTime 34.167 16.08.2020
205 HeatingElement5HeatTime 34.167 16.08.2020
208 HeatingElement7HeatTime 34.667 16.08.2020
226 HeatingElement2HeatTime 37.667 16.08.2020
我尝试ORDER BY gen_date GROUP BY name
,但我总是遇到错误。尚未找到解决方案。
我不能说LIMIT
,因为在其他数据库上我得到了其他(或多或少的元素)。
解决方法
尝试使用解析函数!
SELECT ts_diff,name,s_per_deg,gen_date
FROM (
SELECT ts_diff,CAST(dates.gen_date AS DATE) AS gen_date,ROW_NUMBER() OVER (PARTITION BY name ORDER BY gen_date DESC) rn
FROM heat_data
RIGHT JOIN dates ON dates.gen_date = DATE(ts)
WHERE name != ''
) a
WHERE rn = 1
(按以下注释更改分区)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。