连续区间分组并统计

如图所示,如何实现下边图片中这种分组并统计结果数量

FineReport WHO 发布于 7 小时前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
WHOLv2见习互助
发布于5 小时前

1

最佳回答
0
LazySheepLv7高级互助
发布于6 小时前

mysql

WITH RankedData AS (
    SELECT 
        识别码,
        产品规格,
        CAST(SUBSTRING(识别码, 3) AS UNSIGNED) AS 编号,
        CAST(SUBSTRING(识别码, 3) AS UNSIGNED) - ROW_NUMBER() OVER (PARTITION BY 产品规格 ORDER BY CAST(SUBSTRING(识别码, 3) AS UNSIGNED)) AS 分组标识
    FROM 你的表名
),
GroupedData AS (
    SELECT 
        产品规格,
        MIN(识别码) AS 开始,
        MAX(识别码) AS 结束,
        COUNT(*) AS 总计数,
        分组标识
    FROM RankedData
    GROUP BY 产品规格, 分组标识
)
SELECT 
    产品规格,
    开始,
    结束,
    总计数
FROM GroupedData
ORDER BY 产品规格, 开始;

SqlServer

WITH RankedData AS (
    SELECT 
        识别码,
        产品规格,
        CAST(SUBSTRING(识别码, 3, LEN(识别码)-2) AS INT) AS 编号,
        CAST(SUBSTRING(识别码, 3, LEN(识别码)-2) AS INT) - ROW_NUMBER() OVER (PARTITION BY 产品规格 ORDER BY CAST(SUBSTRING(识别码, 3, LEN(识别码)-2) AS INT)) AS 分组标识
    FROM 你的表名
),
GroupedData AS (
    SELECT 
        产品规格,
        MIN(识别码) AS 开始,
        MAX(识别码) AS 结束,
        COUNT(*) AS 总计数,
        分组标识
    FROM RankedData
    GROUP BY 产品规格, 分组标识
)
SELECT 
    产品规格,
    开始,
    结束,
    总计数
FROM GroupedData
ORDER BY 产品规格, 开始;

最佳回答
0
华莉星宸Lv7专家互助
发布于6 小时前

考试题严禁提问哦~~

要判0分

最佳回答
0
呆呆Lv3中级互助
发布于5 小时前

WITH numbered_data AS (

  SELECT 

    识别码,

    产品规格,

    -- 将识别码转换为数字用于连续性判断

    CAST(SUBSTRING(识别码, 3) AS UNSIGNED) as seq_num,

    -- 为同一产品规格内的记录按顺序编号

    ROW_NUMBER() OVER (PARTITION BY 产品规格 ORDER BY 识别码) as rn

  FROM 你的表名

),

grouped_data AS (

  SELECT 

    识别码,

    产品规格,

    seq_num,

    rn,

    -- 计算分组标识:当前序号减去行号,连续的数据会有相同的差值

    (seq_num - rn) as group_id

  FROM numbered_data

)

SELECT 

  产品规格,

  MIN(识别码) as 开始,

  MAX(识别码) as 结束,

  COUNT(*) as 总计数量

FROM grouped_data

GROUP BY 产品规格, group_id

ORDER BY 产品规格, 开始;

写sql,上面示例代码,换成自己的表和字段

最佳回答
0
Yours飞飞Lv5初级互助
发布于5 小时前

问考试题被抓到会被《判0分》

  • 3关注人数
  • 33浏览人数
  • 最后回答于:5 小时前
    请选择关闭问题的原因
    确定 取消
    返回顶部