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

使用SAS SQL统计仅归属单一首字符类别分组的唯一物品数量

SAS SQL 实现单一首字符类别物品统计方案

核心逻辑拆解

要实现需求,需完成三个关键动作:

  • 提取category_code的首字符作为分组依据
  • 对同一物品在同一首字符下的重复记录去重
  • 筛选出仅归属单一首字符的物品,再按首字符统计数量

方案一:多步骤实现(适合新手理解)

通过临时表逐步处理,逻辑清晰易调试:

步骤1:提取并去重物品-首字符关联

去除同一物品在同一首字符下的重复记录,得到每个物品对应的唯一首字符集合:

PROC SQL;
    CREATE TABLE item_first_char AS
    SELECT DISTINCT
        item_id,
        SUBSTR(category_code, 1, 1) AS first_char  -- 提取首字符
    FROM item_categories;
QUIT;

步骤2:筛选仅归属单一首字符的物品

统计每个物品对应的不同首字符数量,只保留数量为1的物品:

PROC SQL;
    CREATE TABLE valid_items AS
    SELECT
        item_id,
        first_char
    FROM item_first_char
    GROUP BY item_id
    HAVING COUNT(first_char) = 1;  -- 仅保留只有1个首字符的物品
QUIT;

步骤3:按首字符分组统计数量

对符合条件的物品按首字符分组,统计每组的物品数量:

PROC SQL;
    SELECT
        first_char AS category_group,
        COUNT(item_id) AS item_count
    FROM valid_items
    GROUP BY first_char;
QUIT;

方案二:单查询嵌套实现(简洁高效)

将多步骤合并为一个嵌套查询,适合熟悉SQL逻辑后使用:

PROC SQL;
    SELECT
        first_char AS category_group,
        COUNT(item_id) AS item_count
    FROM (
        -- 筛选仅归属单一首字符的物品
        SELECT
            item_id,
            first_char
        FROM (
            -- 提取并去重物品-首字符关联
            SELECT DISTINCT
                item_id,
                SUBSTR(category_code, 1, 1) AS first_char
            FROM item_categories
        ) AS distinct_chars
        GROUP BY item_id
        HAVING COUNT(first_char) = 1
    ) AS valid_items
    GROUP BY first_char;
QUIT;

关键细节说明

  • SUBSTR(category_code, 1, 1):提取category_code的第一个字符,兼容Hadoop Hive SQL语法
  • DISTINCT/GROUP BY item_id, first_char:确保同一物品在同一首字符下仅被统计一次
  • HAVING COUNT(first_char) = 1:过滤掉跨多个首字符类别的物品,只保留归属单一首字符的物品

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:37:44