我有一个包含数据的表格:

create table measure_app_scalemeasurement (
  store_code text,
  certificate_id text,
  audit_ending date);
insert into measure_app_scalemeasurement values
('K010','vwv',  '10.12.2023'),
('K010','cert1','12.12.2023'),
('K054','vwv',  '14.12.2023'),
('K054','cert1','20.01.2024');

我想 Select 最低audit_ending日期 for each 市场store_code,也得到其对应的cert_id

这是我试过的一个查询

select store_code, certificate_id, min(audit_ending) from measure_app_scalemeasurement
group by store_code, certificate_id

pic1

但它给all个市场打出了store_code分,这个问题是:

select distinct on (store_code) store_code, certificate_id, min(audit_ending) from measure_app_scalemeasurement
group by store_code, certificate_id

pic2

它给出了市场K010的最低日期,但没有给出市场K054的最低日期.对于K054,它给出了最大日期.

我想通过其证书ID按市场获取第一个最小日期 就像这样:

store_code certificate_id audit_ending
K010 vwv 10.12.2023
K054 vwv 20.01.2024

推荐答案

你的distinct on几乎是对的:demo

select distinct on(store_code) store_code, certificate_id, audit_ending
from measure_app_scalemeasurement
order by store_code, audit_ending;
store_code certificate_id audit_ending
K010 vwv 2023-12-10
K054 vwv 2023-12-14

您只需要一个匹配的order by,这样对于每个store_code,它只保留最早的(最小)日期.

Sql相关问答推荐

表名数组

无法找到正确的SQL查询需求

如何通过比较不同表中相同ID S的值来筛选ID为S的列表?

无效和不匹配的计数

在SQL中创建一个计数器,根据BigQuery/SQL中的条件递归地添加行值

为什么Prisma生成唯一索引,而不是基于方案上的唯一列约束?

如果开始期间不存在PostgresSql回填数据

如何在PostgreSQL中对第1,1,1,1,2,2,2,2行进行编号

为什么TRY_CONVERT返回一个XML验证错误而不是NULL?

SQL SELECT MOST NEST TIMESTAMP BEAT ORDER

值对于类型字符来说太长

组合2个分区表的postgres视图的执行计划正在访问所有分区

在 SQL Server 中合并两个 XML 列

如何根据创建日期查找两个表中最接近的记录?

创建具有多个子查询的 SQL 视图

SQL 根据前一天的最大值计算每天的值数

如何从postgresql中的项目映射(关联数组)设置值?

如何在 case 语句中使用聚合?

将表格和字符串连接以 for each 记录生成订单项目

如何根据 Amazon Athena 中的多个列值删除重复行?