使用时间戳记postgres查找用户出席率的最大下降

问题描述

我正在做一些Postgresql练习,我得到了这个问题:

表格:

attendance_events: date,student_id,attendance

all_students: student_id,school_id,grade_level,date_of_birth,hometown

这是问题:

昨天和今天之间哪个年级的出勤率下降最大?

我想出了一个我认为应该可行的解决方案,但是我想知道是否存在一种涉及窗口函数的更优雅的方式(每次我看到“因为

这是我的解决方法

select grade_level,date,count(*) attendance_count

from attendance_events
join all_students
using(student_id)

where attendance = True
and date > timestamp 'yesterday'

group by grade_level,date;

哪些应该给我以下内容

grade  |  date         | attendance_count
1      |  20/08/2020   |    10
1      |  19/08/2020   |    10
2      |  20/08/2020   |    12
2      |  19/08/2020   |    10
3      |  20/08/2020   |    14
3      |  19/08/2020   |    12

从这里(MAYBE)进行以下操作?


select max(drop)

from (select grade_level,attendance_count - lag(attendance_count) 
             over(partition by grade_level order by date asc) as drop

      from  (select grade_level,count(*) attendance_count

             from attendance_events
             join all_students
             using(student_id)

             where attendance = True
             and date > timestamp 'yesterday'

             group by grade_level,date));

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)