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

如何用GROUP_CONCAT实现按年份和职位聚合well字段的SQL查询

调整SQL实现按年份和职位分组拼接well字段

表结构

CREATE TABLE cities  
(
    `year` INTEGER,
    `job` TEXT,
    `well` TEXT
);

INSERT INTO cities (`year`, `job`, `well`)
VALUES ('2001', 'A', 'G1'),
       ('2001', 'S', 'G1'),
       ('2001', 'S', 'G2'),
       ('2002', 'S', 'G1'),
       ('2008', 'S', 'G2');

原查询及结果

原SQL语句:

SELECT year, GROUP_CONCAT( job || '-' || well, ',  ') AS id_city
FROM cities
GROUP BY year;

执行结果:

year    id_city
--------------------------
2001    A-G1,  S-G1,  S-G2
2002    S-G1
2008    S-G2

期望结果

year   job   well
---------------------
2001    A     G1
2001    S     G1,G2
2002    S     G1
2008    S     G2

调整后的SQL语句

SELECT 
    year,
    job,
    GROUP_CONCAT(well, ',') AS well
FROM cities
GROUP BY year, job;

改动说明

  1. 分组条件调整:将GROUP BY year改为GROUP BY year, job,按年份和职位的组合进行分组,确保同一year+job下的well会被聚合。
  2. 聚合函数修改:把GROUP_CONCAT( job || '-' || well, ', ')替换为GROUP_CONCAT(well, ','),仅对同一分组内的well字段进行逗号拼接,job作为分组字段直接出现在结果中,无需重复拼接。

执行上述调整后的SQL,即可得到期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:35:30