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

如何将指定SQL查询改写为派生表并解决字段无效报错问题

问题原因
  • 内层派生查询中使用了SUM()聚合函数,但没有添加对应的GROUP BY子句对YEAR(o.order_date)分组,导致非聚合字段order_date不符合SQL分组查询规范,触发报错。
  • 目前你的改写逻辑和原始查询不一致:原始查询是统计每年的订单条目总数,你的改写变成了统计每年的销售额总和,两种场景的正确写法分别如下。
方案1:和原始查询逻辑完全一致的派生表改写
SELECT
    year,
    total
FROM 
    (SELECT
         YEAR(o.order_date) AS year,
         COUNT(i.order_id) AS total
     FROM 
         sales.order_items AS i
     INNER JOIN 
         sales.orders AS o ON i.order_id = o.order_id
     GROUP BY 
         YEAR(o.order_date)
    ) AS derived
ORDER BY year
方案2:如果需要统计每年销售额(你当前改写的需求)的正确写法

内层已经按年分组完成聚合后,外层不需要再重复做GROUP BY和聚合,直接取字段即可:

SELECT
    time AS year,
    price AS total
FROM 
    (SELECT
         YEAR(o.order_date) AS time,
         SUM(i.quantity * i.list_price) AS price
     FROM 
         sales.order_items AS i
     INNER JOIN 
         sales.orders AS o ON i.order_id = o.order_id
     GROUP BY 
         YEAR(o.order_date)
    ) AS derived
ORDER BY year

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:06:01