如何按条件拆分列并统计不同类型卖家数量(SQL实现)
正确SQL实现品牌-卖家类型统计
要实现按品牌分组,分别统计Amazon和3rd Party卖家的数量,你需要使用条件聚合(行转列)的方式编写SQL,具体实现如下:
最终SQL语句
SELECT Brand, COUNT(CASE WHEN SUBSTRING([Buy Box Seller], 1, 9) = 'Amazon' THEN 1 END) AS Amazon, COUNT(CASE WHEN SUBSTRING([Buy Box Seller], 1, 9) = '3rd Party' THEN 1 END) AS [3rd Party] FROM italy_keepa WHERE [Buy Box Seller] IS NOT NULL GROUP BY Brand ORDER BY Brand;
逻辑说明
- 条件聚合实现行转列:
- 通过
CASE WHEN判断每行的卖家类型,符合目标类型时返回1,否则返回NULL COUNT函数会自动忽略NULL值,最终统计出对应类型的卖家数量
- 通过
- 对齐原始字段处理:直接复用你生成
BB_seller的SUBSTRING逻辑,确保统计维度和原始数据一致 - 过滤无效数据:保留
WHERE [Buy Box Seller] IS NOT NULL条件,避免空值干扰统计结果
原SQL错误原因
你之前使用的COUNT(DISTINCT [Buy Box Seller]),逻辑是统计每个品牌下不同卖家名称的数量,而非按"Amazon/3rd Party"分类统计,因此结果和预期不符。
测试数据验证
用你提供的测试数据执行上述SQL,会得到如下结果:
| Brand | Amazon | 3rd Party |
|---|---|---|
| Biotherm | 1 | 0 |
| BVLGARI | 0 | 2 |
| Carolina Herrera | 1 | 0 |
| Chanel | 2 | 0 |
完全匹配你需要的统计格式。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

