【问题标题】:How to get the difference of two values of same column in django如何在django中获取同一列的两个值的差异
【发布时间】:2021-01-10 01:42:54
【问题描述】:

所以我在 Postgres 数据库中有表 T,其中包含用户的日常值。从这张表中,我需要找到所有用户的属性C的昨天值和今天值之间的差值,并返回差值大于10的用户的ID。

整个事情可以在一两个查询中完成吗?我想到的解决方案很幼稚,需要为每个用户单独查询。任何比这更有效的东西也会很棒。

【问题讨论】:

    标签: python django postgresql django-queryset


    【解决方案1】:

    如果没有表 T 的架构,这只是在黑暗中拍摄。就是这样:

    WITH y_date AS (
        SELECT 
            user_id, c
        FROM 
            t
        WHERE 
            timestamp_fld::date = current_date - (interval - '1 day')
    ),
    WITH t_date AS (
        SELECT 
            user_id, c
        FROM 
            t
        WHERE 
            timestamp_fld::date = current_date
    )
    SELECT 
       user_id
    FROM 
       y_date
    JOIN 
       t_date
    ON
        y_date.user_id = t_date.user_id
    WHERE
       abs(t_date.c - y_date.c) > 10
    

    使用 CTE(Common Table Expression) 提取昨天和今天的值,然后加入这些结果以获得每个用户的绝对差值,并且只返回大于 10 的值。以上是基于一堆假设.更好的答案取决于更多信息。

    【讨论】:

    • 经过一些修改后为我工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2020-10-09
    • 1970-01-01
    相关资源
    最近更新 更多