[英]Get MAX value of each record in group by query
我在SQL中的查詢看起來像這樣:
select fldCustomer, fldTerminal, COUNT(fldbill)
from tblDataBills
group by fldCustomer, fldTerminal
order by fldCustomer
結果看起來像:
fldCustomer fldTerminal (number of bills)
0 1 19086
0 2 10
0 5 236
1 1 472
1 5 3
1 500 19
2 1 292
2 500 22
我如何獲得每個客戶的最大數量,所以我得到如下結果
0 1 19086
1 1 472
2 1 292
提前致謝!
使用帶有row_number()
的子查詢:
select fldCustomer, fldTerminal, cnt
from (select fldCustomer, fldTerminal, COUNT(*) as cnt,
row_number() over (partition by fldCustomer order by count(*) desc) as seqnum
from tblDataBills
group by fldCustomer, fldTerminal
) db
where seqnum = 1
order by fldCustomer ;
請注意,在發生平局的情況下,這將任意返回行之一。 如果要全部使用,請使用rank()
或dense_rank()
。
使用RANK()
函數可能需要一些技巧
SELECT fldCustomer, fldTerminal, [(number of bills)] FROM ( SELECT fldCustomer, fldTerminal, COUNT(fldbill) [(number of bills)], RANK() OVER (PARTITION BY fldCustomer ORDER BY COUNT(fldbill) DESC) Ranking FROM tblDataBills GROUP BY fldCustomer, fldTerminal ) a WHERE Ranking = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.