postgresql如何求和所有存在car id的字段

ia2d9nvy  于 2023-04-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(147)

我有两张table,汽车和预订。
我在预订5列:

km int
km_50 int
km_100 int 
km_200 int 
km_300 int 
km_500 int

所以当我有20行的时候,我想把这20行和所有的数据加起来,这可能吗?
我得到一个结果,它也很好,但我可以只有一行,所有添加的行都在那里吗?
现在我得到了这个:
x一个一个一个一个x一个一个二个x
我想要这个结果:

{ k: '0', k1: '5', k2: '1', k3: '0', k4: '0', k5: '0' }

所以当你看到上面的结果时,所有相同的键值都被加在一个中。当一行中存在k1 = 3,而在另一行中存在k1 = 5时,我想把所有的键值加在一个中。

o8x7eapl

o8x7eapl1#

您的想法是正确的,但是您是按所有列进行分组的。相反,您应该只按结果中应该是唯一的列(在本例中是car_id)进行分组,并聚合其他列(就像您对sum调用所做的那样):

SELECT     b.car_id,
           SUM(be.km) as k,
           SUM(be.km_50) as k1,
           SUM(be.km_100) as k2,
           SUM(be.km_200) as k3,
           SUM(be.km_300) as k4,
           SUM(be.km_500) as k5
FROM       booking b
INNER JOIN booking_extras be ON be.booking_id = b.id
WHERE      car_id = 8
GROUP BY   b.car_id -- Only group by car_id

相关问题