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

Oracle SQL如何获取最小日期及对应名称(附示例表)

Oracle SQL获取最小日期对应名称的解决方案

示例表

示例表

嗨,我来帮你搞定这个问题!根据你的需求——要从表中取出最小日期对应的名称,最终返回3行(Ram1行 + def2行),这里给你一个精准的实现方法:

推荐使用窗口函数实现

因为你需要保留同一名称下所有等于最小日期的记录(比如def有两条记录都是它的最早日期,所以都要返回),用RANK()窗口函数是最合适的,它能确保同组内所有最小日期的行都被筛选出来。

假设你的表名为your_table,名称列是name,日期列是event_date,执行以下SQL:

SELECT name, event_date
FROM (
    SELECT 
        name,
        event_date,
        -- 按名称分组,对日期升序排名,最小日期的行排名为1
        RANK() OVER (PARTITION BY name ORDER BY event_date ASC) AS date_rank
    FROM your_table
) ranked_data
WHERE date_rank = 1;

逻辑说明

  • PARTITION BY name:把数据按名称分组,每个名称单独处理
  • ORDER BY event_date ASC:对每个组内的日期按从小到大排序,最小的日期排在最前面
  • RANK():如果同一名称下有多条记录的日期都是最小日期,这些记录的排名都会是1,最终都会被筛选出来

这样执行后,就会得到你预期的结果:Ram的1条最小日期记录,加上def的2条最小日期记录,总共3行数据。如果你的表字段名或者表名不一样,只需要把your_table、name、event_date替换成你实际的字段/表名就行啦~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:55:42