Oracle SQL查询:如何使用count

Ran*_*ion 4 sql oracle

我有以下格式的数据

userid  amount  term  APR
1        10       5    1
1        10       4    2
2        20       6    1
2        20       4    3
2        20       3    1
Run Code Online (Sandbox Code Playgroud)

我想按金额,期限,APR做订单,所以在输出中我想要最大金额和相应的期限,APR.如果金额相同,请选择一个最大期限,如果期限也相同则相同.但这三者的结合总是独一无二的.

输出列:

userid,  amount, term, apr, numberOfRowsForEachUser
  1       10       5   1      2
  2       20       6   1      3
Run Code Online (Sandbox Code Playgroud)

问题:我能够获得前四列,但不确定如何获得"总计没有优惠"或"每个用户的总行数".

我的查询看起来像这样.

select 
  userid,amount,term,apr
  from 
( select userid, amount, term,  apr
   RANK() OVER (PARTITION BY userid ORDER BY amount,term,apr) amount_rank,   
from 
   tableXYZ
) 
where amount_rank = 1 
Run Code Online (Sandbox Code Playgroud)

Jus*_*ave 5

只需添加COUNT(*)分析功能即可

select 
  userid,amount,term,apr, cnt
  from 
( select userid, amount, term,  apr
   RANK() OVER (PARTITION BY userid ORDER BY amount,term,apr) amount_rank,   
   COUNT(*) OVER (PARTITION BY userid) cnt
from 
   tableXYZ
) 
where amount_rank = 1 
Run Code Online (Sandbox Code Playgroud)