【问题标题】:Postgresql: sum of count and one column?Postgresql:计数和一列的总和?
【发布时间】:2021-05-31 17:13:39
【问题描述】:

我有一个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 == 真实记录数加上给定用户的driving_time 列的总和。

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

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

我看过这个问题:

How to compute the sum of multiple columns in PostgreSQL

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

【问题讨论】:

    标签: postgresql


    【解决方案1】:

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

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

    【讨论】:

    • 所以,我需要使用动态行数而不是硬编码值 25。我该怎么做?
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2021-11-10
    • 2013-03-21
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    相关资源
    最近更新 更多