我遇到问题,只能使用子查询。我找到了已售出最多的书的作者姓名。如果只有一行匹配totalsold的MAX值,那么我的工作原理就是如此。ORACLE sql:返回与SUM值相关的子查询的MAX值相关的列
SELECT fname, lname
FROM Books b
JOIN BookAuthor ba ON b.isbn = ba.isbn
JOIN Author a ON ba.authorid = a.authorid
WHERE b.isbn =
(SELECT isbn
FROM
(SELECT SUM(quantity) as totalsold, ba.isbn as isbn
FROM BookAuthor ba
JOIN Author a ON ba.authorid = a.authorid
JOIN OrderItems oi ON ba.isbn = oi.isbn
GROUP BY ba.isbn
ORDER BY totalsold DESC)
WHERE rownum = 1)
然而,在理论上有可能是最高值的领带,我停留在如何返回相关的ISBN绑在MAX值(S)。
在本质上是如何做到这一点查询,而无需使用WHERE ROWNUM = 1
我想出了这一点,但似乎比笨重,但它的工作原理:
SELECT fname, lname
FROM Books b
JOIN BookAuthor ba ON b.isbn = ba.isbn
JOIN Author a ON ba.authorid = a.authorid
WHERE b.isbn IN
(SELECT ISBN
FROM
(SELECT SUM(quantity) as totalsold, ba.isbn as isbn
FROM BookAuthor ba
JOIN Author a ON ba.authorid = a.authorid
JOIN OrderItems oi ON ba.isbn = oi.isbn
GROUP BY ba.isbn)
WHERE totalsold =
(SELECT MAX(totalsold)
FROM
(SELECT SUM(quantity) as totalsold, ba.isbn as isbn
FROM BookAuthor ba
JOIN Author a ON ba.authorid = a.authorid
JOIN OrderItems oi ON ba.isbn = oi.isbn
GROUP BY ba.isbn)))
您并不需要在子查询中执行所有这些连接。检查我更新的答案。 – 2015-04-06 01:08:26
您允许使用分析功能吗? – 2015-04-06 01:31:39