SQL查询查找前2位客户完成的最大事务量(oracle db)

时间:2017-11-13 09:22:11

标签: sql oracle greatest-n-per-group

我想让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

3 个答案:

答案 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