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

2010年产品A月度营收计算方法及现有SQL语句正确性校验

咨询问题
  • 如何统计产品A的总营收?
  • 当前提供的统计解决方案是否正确?
业务背景

需生成2010年度分月销售统计表,统计范围仅限2010年交易数据,输出字段要求如下:

  • 月份
  • 当月购买的去重客户数
  • 销售产品总数量
  • 当月总营收
  • 当月产品A总营收

参考示例数据:
Sample Data

待校验SQL实现:

SELECT MONTH (Date) AS SaleMonth,
           COUNT (DISTINCT CustomerID) AS CustomerCount,   
           COUNT (ProductID) AS ProductCount,
           SUM (Income) AS TotalIncome

FROM table a
WHERE YEAR (Date) = '2010'
GROUP BY MONTH (Date) AS SaleMonth
解答

产品A总营收统计方式

统计产品A总营收的核心逻辑是筛选出所有产品为A的交易记录,对营收字段做求和计算。如果是分月统计场景下的当月产品A营收,使用条件聚合即可,无需拆分多表查询。

现有SQL校验结论

现有SQL不符合需求,存在错误,具体问题如下:

  1. 语法错误:大部分SQL引擎不支持在GROUP BY子句中给字段加别名,GROUP BY MONTH (Date) AS SaleMonth写法无法正常执行
  2. 字段缺失:没有按需求输出「当月产品A总营收」字段
  3. 销量统计逻辑存在隐患:COUNT(ProductID)仅能统计ProductID非空的记录行数,如果单条交易记录对应多件售出商品,该写法无法得到正确的总销售数量,需要根据实际表结构替换为对应数量字段的求和逻辑。
  4. 类型匹配问题:YEAR()函数返回整数类型值,用字符串'2010'做匹配可能触发隐式类型转换,存在索引失效风险。

修正后参考SQL

SELECT 
  MONTH(Date) AS SaleMonth,
  COUNT(DISTINCT CustomerID) AS CustomerCount,   
  SUM(ProductQuantity) AS ProductCount, -- 请将ProductQuantity替换为表中实际存储销售数量的字段名,若每行固定对应1件商品可替换为COUNT(ProductID)
  SUM(Income) AS TotalIncome,
  SUM(CASE WHEN ProductID = 'A' THEN Income ELSE 0 END) AS ProductATotalIncome -- 若表中用产品名称标识产品,可将判断条件替换为ProductName = '产品A'
FROM `table` a
WHERE YEAR(Date) = 2010
GROUP BY MONTH(Date)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 23:00:56