我想让TOP 2客户从表格下方完成最大金额交易。我正在使用oracle db。
我的桌子交易:
tranID PROD_ID QTY PRICE CID
1 100 5 10000 1000
2 103 16 5000 1001
3 102 8 5000 1003
4 200 10 9000 1002
5 204 8 9000 1002
6 207 4 8000 1002
客户
CID CNAME
1001 X
1002 Y
1003 Z
答案 0 :(得分:1)
如果是Oracle 12c,您可以使用它。
SELECT a.CID, b.CNAME, SUM (a.QTY * a.PRICE) amount
FROM transactions a JOIN CUSTOMERS b ON a.CID = b.CID
GROUP BY a.CID, b.CNAME
ORDER BY amount DESC
FETCH FIRST 2 ROWS ONLY
答案 1 :(得分:0)
您可以使用summ group by和rownum的连接和最后一个过滤器
index
答案 2 :(得分:0)
可以使用以下查询完成此操作。首先,你计算总和,然后你订购它,然后你选择前两行。
SELECT t.*
FROM
(
SELECT t.CID, c.name, sum(t.PRICE * t.qty) tsum
FROM transaction t
JOIN customer c ON t.CID = c.CID
GROUP BY t.CID , c.name
ORDER BY tsum DESC
) t
WHERE rownum < 3