sqlite 如何在按每列分组后查找该列的最早日期和最近日期之间的差异

z6psavjg  于 2022-11-30  发布在  SQLite
关注(0)|答案(1)|浏览(209)

我正在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_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非常陌生,对嵌套子查询的一般工作方式仍然有一些困惑。你能帮助我解决我在这里哪里出错吗?

bq8i3lrv

bq8i3lrv1#

移除WHERE子句。
它过滤掉所有的ID,只保留表中的一个:

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

相关问题