PostgreSQL:如何对指定Car ID的多字段求和并合并为单行
解决方案
首先明确表关联逻辑:booking表与cars表通过car_id关联,booking_extras表与booking表通过booking_id关联(若实际关联字段不同,可自行替换)。
要实现指定Car ID的各km字段单行汇总,你需要:
- 用
SUM()函数对每个km字段分别求和 - 仅按
car_id分组(不要将km字段加入GROUP BY) - 通过
WHERE子句过滤目标Car ID(比如8)
示例SQL语句:
SELECT c.car_id, SUM(be.km) AS total_km, SUM(be.km_50) AS total_km_50, SUM(be.km_100) AS total_km_100 -- 其他需要求和的km字段可继续添加 FROM cars c JOIN booking b ON c.car_id = b.car_id JOIN booking_extras be ON b.booking_id = be.booking_id WHERE c.car_id = 8 GROUP BY c.car_id;
关键说明
- 移除GROUP BY中的km字段,仅保留
car_id作为分组依据,确保返回单行汇总结果 - 每个km字段单独用
SUM()包裹,得到对应字段的总合计值 - 若存在
booking无对应booking_extras记录的情况,可改用LEFT JOIN避免数据被过滤
内容的提问来源于stack exchange,提问作者newexe91
相关产品推荐
相关产品推荐

