SQL,连接两个表并选择它们的最大值
我有两张桌子SQL,连接两个表并选择它们的最大值,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,我有两张桌子 customers_bought: PID SID QUANTITY ---------- ---------- ---------- 3289 11 12 74591 11 10 74591 12 1 74591 23 1 74591 31
customers_bought:
PID SID QUANTITY
---------- ---------- ----------
3289 11 12
74591 11 10
74591 12 1
74591 23 1
74591 31 1
88331 13 21
88331 31 48
customers:
PID NAME
---------- --------------------
3289 George
88331 Alice
74591 Jane
10234 Able
我需要做的是列出购买单一类型三明治数量最多的客户。我还需要显示客户名称、pid、sid和数量。这是SQL,当然比听起来要复杂。我不确定如何加入下面的两个结果,以下是我所做的:
Code:
Select C.pid, C.name, CB.sid, CB.quantity
From customers C
Inner Join customers_bought CB
On CB.PID = C.PID;
Result:
PID NAME SID QUANTITY
---------- -------------------- ---------- ----------
3289 George 11 12
74591 Jane 11 10
74591 Jane 12 1
74591 Jane 23 1
74591 Jane 31 1
88331 Alice 13 21
88331 Alice 31 48
Code:
Select CB.sid, MAX(CB.Quantity)
From customers_bought CB
Group By CB.sid
Result:
SID MAX(CB.QUANTITY)
---------- ---------------------------------------
11 12
13 21
31 48
23 1
12 1
试试这个
Select
C.pid, C.name, CB.sid, ms.MaxQuentity
From customers C
Inner Join customers_bought CB
On CB.PID = C.PID
INNER JOIN
(
Select
CB.sid,
MAX(CB.Quantity) AS MaxQuentity
From customers_bought CB
Group By CB.sid
) ms ON ms.sid = CB.sid AND ms.MaxQuentity = CB.QUANTITY
您可以在中找到示例代码,请添加您正在使用的RDBMS的标记。这个问题真的相关吗?看看排名有什么问题?订单?。我想知道您是如何在没有out聚合函数或group by子句的情况下将cb.PID、c.NAME添加到查询中的。您的查询是否至少已编译?