我有一个表存储日志条目,一个简化的版本是
key value
a 1
a 2
a 3
a 2
b 1
b 2
b 2
我只想提取最常见的组合,比如:
key value
a 2
b 2
自 a-1
以及 a-3
组合只出现一次 a-2
组合是两倍。
任何一种sql解决方案都是受欢迎的,我只想知道解决这个问题的要点,我会为我自己的平台/sql变体找到合适的解决方案。
基于gordon linoff的出色回答和我的平台所能提供的能力,我最终使用了以下内容:
select
key,
value
from (
select
key,
value,
rank() over(partition by key order by t1.cnt desc) as rank
from (
select
key,
value,
count(*) as cnt
from
table
group by
key,
value
) t1
group by
key,
value,
t1.cnt
) t2
where t2.rank = 1
3条答案
按热度按时间1l5u6lss1#
试试这个
ou6hu8tu2#
这在mysql中是一个难题,但您可以做到:
如果您使用的是mysql版本8或任何其他数据库,请使用
rank()
或窗口功能:jvlzgdj93#
如果打成平手,两种组合我都可以
你可以试试这个