如何编写SQL查询获取全数据集最大日期并新增为字段?
获取全局最大日期并作为新增字段返回的SQL方案
要实现全局最大日期的字段追加,不需要按分区分组,有两种简洁的方案:
方案1:使用无分区的窗口函数
通过MAX()窗口函数并省略PARTITION BY子句,让窗口覆盖整个数据集,直接计算全局最大日期:
SELECT ID, Name, Date, MAX(Date) OVER () AS "MAX DATE" FROM your_table;
这种方法性能高效,仅需扫描一次表即可完成计算,适合大数据量场景。
方案2:使用子查询计算全局最大值
通过子查询单独获取整个表的最大日期,再与原表所有行关联:
SELECT t.ID, t.Name, t.Date, (SELECT MAX(Date) FROM your_table) AS "MAX DATE" FROM your_table t;
这种写法逻辑直观,适合对窗口函数不熟悉的场景,部分数据库优化器会根据策略自动优化扫描次数。
两种方案都能得到你期望的输出:每一行都会带上整个数据集的最大日期,而非分组后的局部最大值。
内容的提问来源于stack exchange,提问作者Justin Romero
相关产品推荐
相关产品推荐

