返回计数最高的行(例如,有多个城市的情况下,交易最多的城市)

时间:2019-03-28 06:11:54

标签: sql postgresql

我有一个包含以下各行的表: 客户ID 市 transaction_id 日期

我想拉出在一定时间内交易次数最多(count(transaction_id))的城市。客户可以在多个城市进行交易。

实现此目标的正确语法是什么?

更新: 客户A在纽约可以有5笔交易,在波士顿可以有10笔交易。我只希望退回波士顿10笔交易的客户记录。我该如何做?对于每个customer_id具有相同交易次数的城市,该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您只需要排名靠前的城市名称,则可以使用以下方法

select city,count(transaction_id) as cnt
From YourTable
where date=condition --- that you need
group by city
order by cnt desc
limit 1    

如果您需要按客户指定的最高城市名称,请使用row_number()

with cte as
(
 select customerid,city,count(*) as cnt
 from table_name group by customerid,city
), cte1 as
(
select * ,row_number()over(partition by cusomerid order by cnt desc) rn
 from cte
) select * from cte1 where rn=1