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

MySQL SQL测试题求助:如何统计不同在售商品数量对应的卖家数量?

嘿,我来帮你搞定这个MySQL统计问题~

首先咱们得明确需求的核心逻辑:先算出每个卖家有多少在售商品,然后再统计有多少个卖家对应某个商品数量,也就是最终输出里的num_sellers(对应商品数量的卖家数)和items_offered(商品数量)。

你想用CTE的思路是完全正确的,可能之前的写法在二次分组或者字段处理上出了问题,给你一个可行的CTE方案:

WITH seller_item_counts AS (
    -- 第一步:统计每个卖家的在售商品数量
    SELECT seller_id, COUNT(*) AS items_offered
    FROM ITEMS
    GROUP BY seller_id
)
-- 第二步:对每个商品数量,统计对应的卖家数量
SELECT COUNT(*) AS num_sellers, items_offered
FROM seller_item_counts
GROUP BY items_offered
ORDER BY items_offered;

补充说明:

  1. 如果需要确保统计的是存在的卖家(避免ITEMS里的seller_id在SELLERS表中不存在的无效数据),可以在CTE里加上JOIN关联SELLERS表:
WITH seller_item_counts AS (
    SELECT i.seller_id, COUNT(*) AS items_offered
    FROM ITEMS i
    INNER JOIN SELLERS s ON i.seller_id = s.id
    GROUP BY i.seller_id
)
SELECT COUNT(*) AS num_sellers, items_offered
FROM seller_item_counts
GROUP BY items_offered
ORDER BY items_offered;
  1. 如果你不想用CTE,用子查询的写法也能达到同样效果:
SELECT COUNT(*) AS num_sellers, items_offered
FROM (
    SELECT seller_id, COUNT(*) AS items_offered
    FROM ITEMS
    GROUP BY seller_id
) AS seller_items
GROUP BY items_offered
ORDER BY items_offered;

大概率你之前的问题是没做二次分组——只统计了每个卖家的商品数,但没对这个结果再按商品数量分组统计卖家数,或者字段名和要求的输出不匹配,调整一下应该就能通过啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 18:07:43