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

基于两列GROUP BY:查询仅生产单一产品类型且多型号的厂商

解决思路与SQL实现

嘿,这个需求我经常碰到,给你两种实用的SQL写法,都能完美筛选出仅生产一种产品类型且该类型下有多个型号的厂商,最终输出maker和type:

方法一:窗口函数+子查询

这种方法用窗口函数快速统计每个厂商的产品类型总数,逻辑清晰易懂:

SELECT maker, type
FROM (
    SELECT 
        maker, 
        type,
        COUNT(DISTINCT model) AS model_count,
        -- 统计每个厂商的产品类型总数
        COUNT(DISTINCT type) OVER (PARTITION BY maker) AS type_count
    FROM your_table_name  -- 替换成你的实际表名
    GROUP BY maker, type
) AS sub_query
-- 筛选条件:仅1种产品类型,且该类型下型号数>1
WHERE type_count = 1 AND model_count > 1;

方法二:GROUP BY + NOT EXISTS

如果你的数据库不支持窗口函数,这种传统写法也能搞定:

SELECT t1.maker, t1.type
FROM your_table_name t1  -- 替换成你的实际表名
GROUP BY t1.maker, t1.type
-- 先筛选该厂商-类型组合下有多个型号
HAVING COUNT(DISTINCT t1.model) > 1
-- 再确保该厂商没有其他类型的产品
AND NOT EXISTS (
    SELECT 1
    FROM your_table_name t2
    WHERE t2.maker = t1.maker
    AND t2.type != t1.type
);

关键逻辑说明

两种方法的核心都是同时满足两个条件:

  • 厂商只生产一种产品类型(排除同时生产多种类型的厂商)
  • 该产品类型下有多个不同型号(排除只生产单个型号的厂商)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:57:35