问题描述
我正在做一些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 (将#修改为@)