用于最小值的 Postgres sql

Posted

技术标签:

【中文标题】用于最小值的 Postgres sql【英文标题】:Postgres sql for Min Value 【发布时间】:2021-12-30 09:50:16 【问题描述】:

我有一个这样的 postgres 表:

|      val_date       |val_io_id|val_value|
2021-12-30 03:20:00+02  9224    30,3    
2021-12-30 11:10:00+02  9224    36,9
2021-12-30 11:35:00+02  9226    2,2
2021-12-30 12:50:00+02  6645    983
2021-12-30 11:20:00+02  3884    373
2021-12-30 12:45:00+02  3464    4,05
2021-12-30 15:50:00+02  9224    3912580
2021-12-30 17:45:00+02  5296    10,1

我可以让它工作的唯一方法是这样......但我失去了从 val_date 发生的时间部分

SELECT date(val_date), min(val_value)
FROM   data_store.vals_1
                WHERE val_io_id=9224 and date(val_date)='2021-12-30'
                Group BY date(val_date)

我想提取 val_io_id 的最小值 (val_value) 和发生日期时间 (val_date) 我想要这样的结果:

|      val_date       |val_io_id|val_value|
2021-12-30 03:20:00+02  9224    30,3

谢谢

【问题讨论】:

GROUP BY val_io_id。 【参考方案1】:

使用 row_number()

cte as 
(
select val_date,val_io_id,val_value, row_number()over(partition by val_io_id
order by val_value asc) as rnnmbur from data_store.vals_1
) select val_date,val_io_id,val_value where rnnmbur=1

PostgreSQL 中的另一种方式

SELECT DISTINCT ON (val_io_id), val_date,val_value
FROM data_store.vals_1 a

ORDER BY a.val_value sac

【讨论】:

以上是关于用于最小值的 Postgres sql的主要内容,如果未能解决你的问题,请参考以下文章

sql查询时间最小值的列

SQL查询以选择具有最小值的不同行

sql求某一字段中最大值和最小值的问题,高手请进!

有序 postgresql 数组中大于 x 的最小值的位置(优化)

用于查找数组中最小值的分治算法

是否有用于设置值的最大或最小限制的 JS 简短语法 [重复]