如何选择订单项价格总和最高的订单

问题描述 投票:0回答:1

我在 mysql 中有两个表: 订单(id,订单名称) Order_item(id,零件名称,价格,order_id)

订单项中的order_id是订单表的外键。

如何选择order_item价格总和最高的订单?

你能告诉我如何在oracle和mysql中做到这一点吗?

我尝试用这个查询来做到这一点:

SELECT ord.* FROM ORDERS ord WHERE ID =  (Select  o.id from  ORDERS o
inner join order_item oi on o.id =oi.order_id
group by oi.id,ord.orderName
order by sum(oi.price) desc limit 1)

但它选择了 order_item.price 价格最高的订单。

;

注意 select top 1 在 mysql 中是无效的语句。

这是正确的解决方案吗?:

SELECT ord.* FROM ORDERS ord WHERE ID =  (  Select  o.id from  ORDERS o
inner join order_item oi on o.id =oi.order_id group by o.id order by sum(oi.price) desc limit 1);

至少在Mysql服务器上它运行。如何重写这个以正确的 Oracle sql 语句?

sql oracle greatest-n-per-group
1个回答
0
投票

在甲骨文中:

SELECT o.id,
       MAX(o.ordername) AS ordername
FROM   Order o
       INNER JOIN Order_item oi
       ON (o.id = oi.order_id)
GROUP BY o.id
ORDER BY SUM(oi.price) DESC
FETCH FIRST ROW ONLY;

在 MySQL 中:

SELECT o.id,
       MAX(o.ordername) AS ordername
FROM   Order o
       INNER JOIN Order_item oi
       ON (o.id = oi.order_id)
GROUP BY o.id
ORDER BY SUM(oi.price) DESC
LIMIT 1;
© www.soinside.com 2019 - 2024. All rights reserved.