【发布时间】:2021-03-27 08:09:06
【问题描述】:
我有三个数据库表:
-
汽车
- 身份证
-
速度
- 身份证
- 实际速度
- car_id
- gear_id
-
齿轮
- 身份证
我想选择所有汽车的最高速度以及它们达到最高速度的档位。我得到了以下查询:
SELECT MAX(speed.actual_speed)
FROM car
INNER JOIN speed ON car.id = speed.car_id
GROUP BY car.id;
此查询有效,但不返回齿轮。如果我在选择SELECT MAX(speed.actual_speed), speed.gear_id 中包含gear_id。数据库抱怨 gear_id 应该包含在 group by 或聚合函数中。
但如果我将它包含在GROUP BY car.id, speed.gear_id 的组中,则查询会返回我不感兴趣的所有齿轮的最大速度。
有没有办法让所有汽车以最高速度和达到最高速度的档位恢复?
【问题讨论】:
-
我删除了不一致的数据库标签。请仅使用您真正使用的数据库进行标记。
标签: sql postgresql subquery sql-order-by greatest-n-per-group