SQL查找每个主键的本地计数最大值



我有一个PK CustomerId +类型的表。每个客户都有几种类型。

对于每个customer,我想获得该客户重复次数最多的类型。

我试图创建一个列"count",但我想获得本地最大值,而不是全局最大值为整个col

是否有一种本地的方法来做到这一点?

获取该客户重复次数最多的类型

您需要按CustomerId,type分组。对于row_number,您可以根据CustomerId进行分区,并根据COUNT(类型)进行排序。

试题:

WITH cte AS (
SELECT CustomerId , 
type, 
ROW_NUMBER() OVER (PARTITION BY CustomerId ORDER BY COUNT(type) DESC ) as row_num
FROM test
GROUP BY CustomerId,type
) SELECT CustomerId, type
FROM cte 
WHERE row_num = 1 ;

https://dbfiddle.uk/?rdbms=mysql_8.0&小提琴= 8 e8657dfa08ff170ed3eaf5e335b3582

最新更新