用于最小值的 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的主要内容,如果未能解决你的问题,请参考以下文章