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

如何关联两个SQL查询并为每个feature root添加首个feature name列

解决方法

有两种实用的方法可以实现你的需求,既保留分组统计的结构,又新增每个feature_root对应的首个feature_name:

方法一:先筛选首个名称再关联统计结果

先通过窗口函数给每个feature_root下的记录编号,筛选出每组的第一条记录,再和你的分组统计查询关联:

WITH first_feature AS (
    SELECT 
        feature_root, 
        feature_name,
        -- 按feature_name排序,给每个feature_root下的记录编序号,你可以换成其他排序字段(比如create_time)来定义"首个"
        ROW_NUMBER() OVER (PARTITION BY feature_root ORDER BY feature_name) AS rn
    FROM feature
)
SELECT 
    stat.feature_root, 
    stat.count, 
    first_feature.feature_name AS first_feature_name
FROM (
    -- 你的原分组统计查询
    SELECT feature_root, COUNT(*) AS count
    FROM feature
    GROUP BY feature_root
) stat
JOIN first_feature ON stat.feature_root = first_feature.feature_root
WHERE first_feature.rn = 1;

方法二:用窗口函数直接生成结果

这种方式更简洁,直接在原表上通过窗口函数计算统计数和首个名称,最后用DISTINCT去重得到分组结果:

SELECT 
    DISTINCT feature_root,
    -- 计算每个feature_root的总数
    COUNT(*) OVER (PARTITION BY feature_root) AS count,
    -- 获取每个feature_root的首个feature_name,同样可以修改ORDER BY字段定义"首个"
    FIRST_VALUE(feature_name) OVER (PARTITION BY feature_root ORDER BY feature_name) AS first_feature_name
FROM feature;

注意点

  • 这里的"首个"是按feature_name排序后的第一条,如果需要按插入顺序或其他逻辑定义,把ORDER BY后面的字段换成对应的字段(比如表中如果有create_time字段,就写ORDER BY create_time)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:52:07