mysql - mysql获取具有最大聚合计数的条目
问题描述
我有一个 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;
但是,我只想获得每个域的计数最高的域模式组合。
解决方案
接下来你只需要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;
推荐阅读
- javascript - Preact 错误 - 对象不支持属性或方法“平面”
- saml-2.0 - 注销抛出证书无效签名
- javascript - VS Code 代码格式化 JavaScript 不正确
- javascript - 尝试使用枚举属性从 History 对象中提取状态时遇到 Typescript 错误
- azure - 如何将 AddAzureWebAppDiagnostics 与 IFunctionsHostBuilder 一起使用
- php - TCPDF:如何计算并在一页上放置适当的块,然后从表格开始
- selenium - Webdriver 页面源未更改
- javascript - 为什么这段代码同时使用 useMemo 和 createSelector?
- python - 使用命名参数从 Node.js (child_process) 运行 python 脚本
- wpf - 如何使用 VB.NET 区分 SHDocVw.InternetExplorer 和 SHDocVw.WebBrowser_v1?