postgresql - PostgreSQL MIN 和 MAX 函数不返回一个结果
问题描述
在 PostgreSql DB 中,我有一个名为Trip
.
表中有一列称为id
一列meta
。
id
一行中的示例如下所示:
id = 123456
meta
一行中的示例如下所示:
meta = {"runTime": 3922000, "distance": 85132, "duration": 4049000, "fuelUsed": 19.595927498516176}
我想从Trip
表中选择具有最小 kph 的行程并显示行程 ID 和最小 kph。这是我的查询:
select tp."id" tripid, MIN((3600 * (tp."meta"->>'distance')::numeric)
/ ((tp."meta"->>'runTime')::NUMERIC)) minkph FROM "Trip" tp
WHERE tp."createdAt" BETWEEN '2020-04-01 00:00:00+00'
and '2020-04-30 00:00:00+00'
GROUP BY tp."id"
但是,此查询返回所有行程的 id 和除法计算结果,而不仅仅是一行。
能否请你帮忙?
解决方案
您可以order by
计算kph
字段并仅返回第一个:
select tp."id" tripid, MIN((3600 * (tp."meta"->>'distance')::numeric)
/ ((tp."meta"->>'runTime')::NUMERIC)) minkph FROM "Trip" tp
WHERE tp."createdAt" BETWEEN '2020-04-01 00:00:00+00'
and '2020-04-30 00:00:00+00'
GROUP BY tp."id"
order by 2
limit 1
推荐阅读
- arrays - 从 Oracle 19c 表中的数组中选择 json 值
- reactjs - 在多个 onClicks 上使 redux 操作异步
- kubernetes - 如何有效实施 EKS 集群自动扩展
- sql - 使用另一个表中的值更新表中列的所有记录
- r - 基于多列合并两个数据集,但使时间列在分钟范围内灵活
- python-3.x - 如何设置 px.timeline tickvals?
- django - 如何从 django 模板中的 for 循环中获取特定的 id?
- javascript - Stripe - 如何添加持卡人姓名和邮政编码
- python - 使用 ZipFile 读取文件后如何编码 html 文件?
- docker - 如何将工件路径从 gitlab-ci 传递到 dockerfile?