sql - 使用 SQL 查找表中值的最高计数
问题描述
我正在寻找一种通过 SQL 查找列的最高计数值的方法。例如,如果这是我的数据
id type
----------
1 A
1 B
1 A
2 C
2 D
2 D
我希望结果是:
1 A
2 D
我正在寻找一种方法来做到这一点,而无需摸索我计数的列(在示例中输入)
谢谢
解决方案
从统计学上讲,这被称为“模式”。您可以使用窗口函数计算它:
select id, type, cnt
from (select id, type, count(*) as cnt,
row_number() over (partition by id order by count(*) desc) as seqnum
from t
group by id, type
) t
where seqnum = 1;
如果存在关联,则从关联中选择任意值。
推荐阅读
- google-app-engine - 如何将 python3 标准环境应用引擎 url 的请求限制为单个服务帐户?
- c# - 从 XmlReader.ReadInnerXml 保存 XmlDocument 时出现 OutOfMemoryException
- r - 看不到为什么重新排序功能不起作用
- docker - Nextcloud 容器和外部硬盘
- angular - Angular 中带有警告的 FormGroup
- components - 如何使用新的容器映像更新 openshift kube-apiserver 组件?
- reactjs - 不变违规:本机模块不能为空。React Native Firebase 应用程序
- java - 放大身份验证事件在 android 中不起作用
- localhost - 你可以在本地主机上使用 reCaptcha 吗?
- r - 在 R ggplot2 和 ggforce 中使用 facet_wrap_paginate 缺少 x 轴标签