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

请求优化SQL查询:按gender与age_group统计总income

修正后的SQL查询及问题说明

原查询存在的核心问题

  • WHERE子句逻辑错误:OR A._gender_='Female'优先级低于AND,导致未关联event、product的account数据被混入查询结果,破坏了表关联逻辑。
  • 分组字段错误:原查询按A._age_和P._price_分组,无法实现按age_group和gender合并统计的需求。
  • 收入计算逻辑错误:count(E._event_name_) * P._price_仅适用于单一单价场景,若不同事件对应不同价格,会导致统计结果失真,正确方式应直接累加每个内购事件的对应价格。
  • 表连接不规范:使用逗号连接表易引发笛卡尔积,建议用显式JOIN明确关联关系。

修正后的SQL语句

SELECT 
    A._gender_,
    SUM(P._price_) AS income,
    CASE 
        WHEN A._age_ BETWEEN 0 AND 18 THEN '0-18'
        WHEN A._age_ BETWEEN 19 AND 24 THEN '19-24'
        WHEN A._age_ BETWEEN 25 AND 30 THEN '25-30'
        WHEN A._age_ BETWEEN 31 AND 40 THEN '31-40'
        WHEN A._age_ BETWEEN 41 AND 55 THEN '41-55'
        ELSE '其他' -- 处理不在指定区间的年龄
    END AS age_group
FROM event E
JOIN Account A ON E._device_id_ = A._device_id_
JOIN Product P ON E._event_name_ = P._event_name_id
WHERE 
    E._event_name_ IN ('App_Purchase_001', 'App_Purchase_002', 'App_Purchase_003')
    AND A._gender_ IN ('Male', 'Female')
GROUP BY A._gender_, age_group
ORDER BY age_group, A._gender_; -- 可选排序,让结果更直观

修正效果说明

  • 严格按gender和age_group合并分组,解决重复分组问题
  • 收入计算改为累加每个内购事件的产品价格,统计结果准确
  • 显式JOIN语句让表关联逻辑更清晰,避免不必要的笛卡尔积
  • 新增ELSE分支处理超出指定范围的年龄,避免age_group出现NULL值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:37:01