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

如何使用SQL从现有数值表创建含分组分类的新表?

按进度天数分组创建新表的SQL实现

假设你的现有表名为task_progress(可替换为实际表名),以下是实现需求的具体SQL语句:

1. 先查询验证分组结果

如果只是想查看分组后的结果(不创建新表),可以用以下语句添加分组列:

SELECT 
    `task A`,
    `Days in progress`,
    CASE 
        WHEN `Days in progress` > 20 THEN 'High'
        WHEN `Days in progress` < 20 THEN 'Low'
        ELSE 'Medium' -- 处理等于20的情况,可根据需求调整(比如归入Low/High)
    END AS `Progress Group`
FROM task_progress;

2. 创建包含分组的新表

MySQL/MariaDB 语法

CREATE TABLE task_progress_groups AS
SELECT 
    `task A`,
    `Days in progress`,
    CASE 
        WHEN `Days in progress` > 20 THEN 'High'
        WHEN `Days in progress` < 20 THEN 'Low'
        ELSE 'Medium'
    END AS `Progress Group`
FROM task_progress;

SQL Server 语法

SELECT 
    [task A],
    [Days in progress],
    CASE 
        WHEN [Days in progress] > 20 THEN 'High'
        WHEN [Days in progress] < 20 THEN 'Low'
        ELSE 'Medium'
    END AS [Progress Group]
INTO task_progress_groups
FROM task_progress;

你之前尝试的问题说明

  • 用单引号'days in progress'包裹列名是错误的,单引号用于字符串常量,列名需根据数据库用反引号(MySQL)、方括号(SQL Server)或双引号(Oracle)包裹。
  • 你的示例用了COUNT统计数量,但需求是给每行添加分组标签,因此不需要COUNT,直接用CASE WHEN生成新列即可。

参考了《在CASE语句中使用SQL COUNT》的相关内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:22:54