sql - 按多列分组,但只返回一行。仅聚合一列
问题描述
如果我有这张桌子
Contract : Code : Date
62 11 01/01/2016
62 16 01/02/2016
62 09 01/03/2016
我只想返回这一行,
Contract : Code : Date
62 09 01/03/2016
我想做一个选择合同,最大(数据),按合同的代码组
但我不能,因为代码列应该以某种形式聚合。
我已经尝试了每个聚合函数,但在更大的数据集中它们都不起作用。比如,最大值,最小值,总和,计数等。我只需要该合同和日期的代码。
你们能帮帮我吗?非常感谢
解决方案
Postgres 有一个非常方便的扩展名为distinct on
,它非常有效地做到了这一点:
select distinct on (contract) t.*
from t
order by contract, date desc;
distinct on
为括号中键的每个值返回一行。该行是遇到的第一行 - 基于order by
- 对于每组值。
推荐阅读
- installation - 错误:预期要注册的包 `Juno [e5e0dc1b]`
- flutter - 我正在尝试在 listView 下方创建一个按钮,并在 modalBottomSheet 中创建所有这些按钮,但我失败了
- python - 在 Python 中使用请求抓取页面时挂起
- opengl - 为什么 OPENGL 缺少无符号的 16 位 RGB 格式?
- html - 如何防止
- operating-system - 什么是IO口、串口,它们有什么区别?
- python - 如何使用 Selenium 和 Python 从自动建议中选择一个选项
- vue.js - VueJS - 我如何重新加载数据表?
- java - 禁用暗模式在 android 应用程序中不起作用
- c++ - 使用没有虚拟析构函数的基类有什么办法吗?