求助:基于timestamp对ids排序,group by等方法均无效
问题描述
- 需求:基于
timestamp字段对ids进行排序 - 当前数据状态:

- 期望结果:

- 已尝试操作:使用
GROUP BY及各类条件,但均未实现需求
解决方案
你用GROUP BY的思路不对,GROUP BY是用来做分组聚合的,不是排序工具。要实现按timestamp对ids排序,直接用ORDER BY子句就能解决:
基础排序(所有记录按timestamp排序)
如果只是要把所有记录按照timestamp的顺序排列,执行下面的SQL:
SELECT ids, timestamp FROM your_table ORDER BY timestamp ASC; -- 升序用ASC,降序换成DESC,对应你的期望结果选择
分组后排序去重(保留每个ids的最新/最早记录)
如果你的需求是每个ids只保留一条记录,且按timestamp排序后取最新(或最早)的,用窗口函数实现:
WITH sorted_ids AS ( SELECT ids, timestamp, -- 按ids分组,每组内按timestamp降序排,给每条记录标序号 ROW_NUMBER() OVER (PARTITION BY ids ORDER BY timestamp DESC) AS row_num FROM your_table ) SELECT ids, timestamp FROM sorted_ids WHERE row_num = 1 -- 只取每组第一条(最新的记录) ORDER BY timestamp DESC; -- 最后再整体按timestamp排序
内容的提问来源于stack exchange,提问作者ahmed khan
相关产品推荐
相关产品推荐

