首页 > 解决方案 > Postgresql:计数和一列的总和?

问题描述

我有一张user_stats桌子。表中的一列是driving_time

user_stats
- user_id (FK)
- driving_time (Int)
- is_new_drive Bool
- is_time_duration Bool

每次用户驾驶时都会创建一个新行并将其is_new_drive设置为 true。每次用户结束驱动器时,都会创建一个新行,is_time_duration并将其设置为 true,并将driving_time设置为驱动的秒数。

我想运行一个返回的查询:

drives_and_duration_total | user_id

drives_and_duration_total是计算用户的所有驱动器和为用户驱动的时间量的总和。所以我想要一个数字,它是is_new_drive== true 记录数的总和加上driving_time给定用户的列的总和。

因此,如果用户 10 驾驶了 25 次,并且该driving_time用户所有的总和为 23034,那么drives_and_duration_total应该是23059 (23034+25)。

什么查询可以让我得到那种类型的表作为结果(我会按 user_id ... 分组)。

我看过这个问题:

如何计算 PostgreSQL 中多列的总和

但是,我不确定这是否以及如何引导我得到我需要的答案,因为我不只是计算列的总和,我需要计算一列的总和并计算is_new_drive=truecase 的行数,然后得到总...

标签: postgresql

解决方案


引用的问题询问并回答如何计算同一行中的列的总和。这不是您需要的,而是您需要sum 函数。这将计算列中值的总和。所以:

select user_id, sum(driving_time) + 25 as drive_minuets
  from user_stats 
 group by user_id 
 where is_time_duration; 

推荐阅读