postgresql - 如何从postgres中具有最大计数的列中获取值?
问题描述
我了解 MAX 函数从给定列返回数值列的最大值。我想返回一列的最大计数。下表有两列制造商,产品。
maker product
A Printer
B Laptop
B Laptop
A Printer
A Monitor
A Printer
A Scanner
但是当我运行查询'''select maker, max(type) from table group by maker; ''' 我得到的结果是
maker product
A Monitor
B Laptop
我想要哪种产品相对于制造商具有最大计数,如下所示。
maker product
A Printer
B Laptop
注意:由于制造商数量不同,我们不能在Having子句中设置一个共同的数字。
解决方案
您可以使用RANK()
窗口功能来做到这一点:
select t.maker, t.product
from (
select maker, product,
rank() over (partition by maker order by count(*) desc) rn
from tablename
group by maker, product
) t
where t.rn = 1
请参阅演示。
结果:
| maker | product |
| ----- | ------- |
| A | Printer |
| B | Laptop |
推荐阅读
- angular - 装饰器不支持函数调用,但调用了“PopoverModule”
- google-apps-script - 如何将某些标记电子邮件中的链接地址导入 Google 脚本?
- sql - 如何查看滚动五周不同值的时间点?
- javascript - 安全用户认证脚本电子
- jenkins - yaml 键中的特殊图表:管道实用程序步骤
- java - 如何修复强化区域设置相关比较问题
- python-3.x - 在循环中附加到 numpy 数组
- python - 模块安装如何在 Python 中工作?
- mysql - MySQL累积和查询未返回预期结果
- sql-server - SSIS - 如果源数据集中的任何行缺少值,则失败?