将两个不同表中的两列相乘后查找最大值-SQL
我正试图找到一种正确的方法,在将不同表中的2列相乘后找到最大值: 订单将两个不同表中的两列相乘后查找最大值-SQL,sql,Sql,我正试图找到一种正确的方法,在将不同表中的2列相乘后找到最大值: 订单(OID、PID、数量、日期) 产品(PID、Pname、价格、类别、子类别)。 我需要找出哪个OID的订单总额最高。 我试过这个: SELECT OID, OrderAmount FROM Orders WHERE OrderAmount=(SELECT MAX(OrderAmount) from Orders (SELECT Orders.OID, OrderAmount=Products.Price*Orders.Qua
(OID、PID、数量、日期)
产品(PID、Pname、价格、类别、子类别)
。
我需要找出哪个OID的订单总额最高。
我试过这个:
SELECT OID, OrderAmount
FROM Orders
WHERE OrderAmount=(SELECT MAX(OrderAmount) from Orders
(SELECT Orders.OID, OrderAmount=Products.Price*Orders.Quantity
FROM Orders
INNER JOIN Products ON Orders.PID=Products.PID);
也许有更有效的解决办法?
提前谢谢大家 方法1:
聚合
函数
SELECT TOP 1 OID, MAX(OrderAmount) MaxOrderAmount
FROM (
SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
) X GROUP BY OID
方法1:行数
概念
SELECT TOP 1 OID, OrderAmount AS MaxOrderAmount
FROM (
SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
ROW_NUMBER() OVER(ORDER BY Products.Price * Orders.Quantity) RN
FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
) X WHERE RN = 1
方法1:
聚合
函数
SELECT TOP 1 OID, MAX(OrderAmount) MaxOrderAmount
FROM (
SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
) X GROUP BY OID
方法1:行数
概念
SELECT TOP 1 OID, OrderAmount AS MaxOrderAmount
FROM (
SELECT Orders.OID, OrderAmount = Products.Price * Orders.Quantity
ROW_NUMBER() OVER(ORDER BY Products.Price * Orders.Quantity) RN
FROM Orders INNER JOIN Products ON Orders.PID=Products.PID
) X WHERE RN = 1
使用“内部联接然后按top分组”语句,在单个select语句中不需要任何子查询选择top 1 max(Products.Price*Orders.Quantity)作为TOrderAmount,Orders.OID from Orders内部联接Orders上的产品。PID=Products.PID group by Orders.OID order by TOrderAmount desc;使用“内部联接然后按top分组”语句,在单个select语句中不需要任何子查询选择top 1 max(Products.Price*Orders.Quantity)作为TOrderAmount,Orders.OID from Orders内部联接Orders上的产品。PID=Products.PID group by Orders.OID order by TOrderAmount desc;