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

如何按ID列分组字符串表并按优先级规则聚合书名列数据

实现方案

核心思路

  • 同ID下记录设置优先级:英文书名 > 法文书名,剔除书名、语言为空的无效记录
  • 同优先级下按书名的字典序升序排序,取每个ID排序首位的记录
  • 同ID下无有效记录时,标题、语言、销量均返回字符串null

代码实现(通用标准SQL)

WITH ranked_books AS (
    SELECT 
        ID,
        Title,
        Language,
        Sales,
        -- 自定义排序规则:英文优先级最高,同语言按书名升序排列
        ROW_NUMBER() OVER (
            PARTITION BY ID 
            ORDER BY 
                CASE Language WHEN 'English' THEN 1 WHEN 'French' THEN 2 ELSE 3 END,
                Title ASC
        ) AS rn
    FROM your_table_name -- 替换为你的实际表名
    WHERE Title IS NOT NULL AND Language IS NOT NULL -- 过滤空值无效记录
)
SELECT 
    t.ID,
    COALESCE(rb.Title, 'null') AS Title,
    COALESCE(rb.Language, 'null') AS Language,
    COALESCE(rb.Sales, 'null') AS Sales
FROM (SELECT DISTINCT ID FROM your_table_name) t
LEFT JOIN ranked_books rb ON t.ID = rb.ID AND rb.rn = 1
ORDER BY t.ID;

注意事项

如果同ID下的销量字段存在不一致的情况,可按需调整销量的取值逻辑,例如将rb.Sales替换为MAX(rb.Sales)做聚合取值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:36:03