【问题标题】:mysql get entry with max count of aggregationmysql获取具有最大聚合计数的条目
【发布时间】:2021-07-30 00:09:17
【问题描述】:

我有一个 email_patterns 表,我想为每个域找到最常见的模式:

email_patterns
id, domain, pattern
1, microsoft.com, first.last
2, microsoft.com, first.last
3, microsoft.com, last.first
4, microsoft.com, first
5, apple.com, last
6, apple.com, last.first
7, apple.com, last.first

查询应该返回

domain, pattern, count
microsoft.com, first.last, 2
apple.com, last.first, 2

这是获取每个域、模式组合的计数的方法:

SELECT domain, pattern, COUNT(1) count FROM email_patterns GROUP BY domain, pattern;

但是,我只想获取每个域中计数最高的域模式组合。

【问题讨论】:

    标签: mysql sql greatest-n-per-group


    【解决方案1】:

    接下来你只需要ROW_NUMBER():

    SELECT domain, pattern, cnt
    FROM (SELECT domain, pattern, COUNT(*) as cnt,
                 ROW_NUMBER() OVER (PARTITION BY domain ORDER BY COUNT(*) DESC) as seqnum
          FROM email_patterns
          GROUP BY domain, pattern
         ) dp
    WHERE seqnum = 1;
    

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多