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

如何计算市场占有率百分比?求解Maruti2017年12月市占率的SQL写法

原有SQL错误点
  • 未限定统计时间范围,统计了所有月份的数据,不符合「2017年12月」的需求
  • 误用COUNT(*)统计维度:COUNT(*)统计的是匹配的记录条数,市场占有率需要用销量数值units_sold的总和计算
  • 子查询逻辑错误:子查询SELECT units_sold FROM Test group by carmaker会返回多行车企销量数据,无法直接作为占有率计算的分母,分母应为2017年12月所有车企的总销量之和
  • 未考虑整数除法问题:数据库中整数相除默认返回整数,会丢失小数精度,需要通过乘以100.0这类操作转换为浮点运算
正确SQL实现

仅查询Maruti的2017年12月市场占有率

SELECT 
    'Maruti' AS carmaker,
    ROUND(
        (SUM(CASE WHEN carmaker = 'Maruti' THEN units_sold ELSE 0 END) * 100.0) / SUM(units_sold),
        2
    ) AS sharepercent
FROM Test
WHERE month = 'Dec-2017';

查询2017年12月所有车企的市场占有率(可选)

SELECT 
    carmaker,
    ROUND(
        (SUM(units_sold) * 100.0) / (SELECT SUM(units_sold) FROM Test WHERE month = 'Dec-2017'),
        2
    ) AS sharepercent
FROM Test
WHERE month = 'Dec-2017'
GROUP BY carmaker;
计算结果验证

2017年12月全市场总销量 = 198023(Maruti)+140897(Hyundai)+76542(Honda)+21734(Renault)+67521(Tata)= 504717
Maruti市场占有率 = 198023 / 504717 * 100 ≈ 39.23%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:09:03