我有一个 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()
。
关于sql - 通过查询获取组中每条记录的MAX值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48609300/