【问题标题】:How to find the difference between oldest date and most recent date for each column after grouping by that column如何在按该列分组后找到每列的最早日期和最近日期之间的差异
【发布时间】:2022-11-27 23:16:37
【问题描述】:

我在 Python 上使用 SQLite3 中的表,该表有四个属性 -

ID, added(date when course added to subsection), course_id, course_subsection_title

其中,date_added 属性包含课程添加到 course_subsection 的日期,course_id 包含添加的课程 ID,id 包含 course_subsection 的 ID。我必须编写的查询按 course_subsections 对课程进行分组,然后计算添加的最旧课程与添加到特定 course_subsection 的最新课程之间经过的天数。我有一个查询如下,但它似乎工作不正确 -

query =  '''
        SELECT 
          course_subsections.ID as id,
          CAST((JulianDay(max(course_subsections.added)) - JulianDay(min(course_subsections.added))) as INTEGER) as num_days_passed
        FROM course_subsections
        WHERE course_subsections.ID = (
                              SELECT course_subsections.ID 
                              FROM course_subsections
                              GROUP BY course_subsections.ID
                              )
        ORDER BY num_days_passed DESC
     '''

然而,这并不像它应该的那样工作。我是 SQLite 的新手,对嵌套子查询的一般工作方式仍然有些困惑。你能帮我解决我哪里出错了吗?

【问题讨论】:

    标签: sql database sqlite


    【解决方案1】:

    删除 WHERE 子句。
    它过滤掉所有IDs,但其中一个表:

    SELECT ID,
           CAST(JulianDay(MAX(added)) - JulianDay(MIN(added)) AS INTEGER) AS num_days_passed
    FROM course_subsections
    GROUP BY ID
    ORDER BY num_days_passed DESC;
    

    请参阅简化的demo

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2021-06-29
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多