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

数据库查询需求:获取各特许经营权起始年份及初始名称

获取各特许经营权的起始年份及初始名称

没问题,我来帮你搞定这个需求!要从你的数据里提取每个franchID对应的最早年份(起始年份)和当时的名称,有两种常用的SQL实现方式,都能精准满足你的期望输出:

方法一:使用窗口函数(推荐,逻辑清晰直观)

窗口函数可以直接给每个特许经营权的记录按年份排序,筛选出第一条(最早的)记录:

SELECT yearID AS StartYear, franchID, name
FROM (
    SELECT 
        yearID, 
        franchID, 
        name,
        -- 按特许经营权分组,按年份升序排序,给最早的记录标记为1
        ROW_NUMBER() OVER (PARTITION BY franchID ORDER BY yearID ASC) AS record_rank
    FROM your_table_name -- 替换成你的实际表名
) ranked_records
WHERE record_rank = 1;

方法二:分组聚合+关联查询

先通过分组计算出每个特许经营权的最早年份,再关联回原表获取对应年份的名称:

SELECT t.yearID AS StartYear, t.franchID, t.name
FROM your_table_name t -- 替换成你的实际表名
INNER JOIN (
    -- 先拿到每个franchID的最小年份
    SELECT franchID, MIN(yearID) AS earliest_year
    FROM your_table_name
    GROUP BY franchID
) min_year_data 
    ON t.franchID = min_year_data.franchID 
    AND t.yearID = min_year_data.earliest_year;

两种方法的细微区别

  • 如果某个特许经营权在同一年有多个名称记录,窗口函数会只返回其中一条(可以通过调整ORDER BY的字段来控制返回哪条,比如加ORDER BY yearID ASC, name ASC);
  • 关联查询的方法会返回所有同年份的记录,如果你需要保留这种场景下的多条数据,这个方法更合适。

根据你给出的示例数据,两种方法都会得到你想要的结果:

StartYear franchID name

1883 ATL Boston Beaneaters
1883 PHI Philadelphia Quakers

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:11:19