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

如何用SQL从OM数据库查询金额最高的订单ID及订单总额?

解决方法

错误原因

你写的SQL报错是因为:使用聚合函数SUM()时,非聚合字段order_id没有通过GROUP BY分组。数据库无法将单个订单ID和全局的总价计算结果对应,必须按order_id分组,才能计算每个订单的总金额。

正确SQL写法

方法1:适用于大多数数据库(取单个最高额订单)

SELECT order_id, SUM(unit_price) AS total_amount
FROM items
GROUP BY order_id
ORDER BY total_amount DESC
LIMIT 1;
  • GROUP BY order_id:将同一订单的所有记录归为一组
  • SUM(unit_price):计算每组(每个订单)的总金额,用AS total_amount给结果起别名方便排序
  • ORDER BY total_amount DESC:按总金额从高到低排序
  • LIMIT 1:只取排序后的第一条,就是金额最高的订单

方法2:支持窗口函数的数据库(可返回多个并列最高的订单)

如果存在多个订单总金额相同且都是最高的,用这个方法可以把它们都查出来:

SELECT order_id, total_amount
FROM (
    SELECT order_id, SUM(unit_price) AS total_amount,
           RANK() OVER (ORDER BY SUM(unit_price) DESC) AS rnk
    FROM items
    GROUP BY order_id
) ranked
WHERE rnk = 1;
  • 子查询里先按订单分组计算总额,同时用RANK()窗口函数给每个订单按总额降序排名
  • 外层查询筛选排名为1的记录,就能得到所有最高额的订单

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:31:00