gpt4 book ai didi

sql - 将缺失的信息添加到表中? (考虑随机开始和结束月份)

转载 作者:行者123 更新时间:2023-11-29 12:12:40 26 4
gpt4 key购买 nike

我有下表spanishcourse,表示学生在西类牙语类(class)中的成绩。这是一所每月开课的学校,学生可以在一年中随机开始和离开类(class)(分别为 month inmonth out 列)。事实上,其中一些学生在某些月份缺席,当他们缺席时,成绩为 0。问题是当学生缺席时,month 列不会将成绩显示为 0( 成绩)。

month in    month out   month   student grades  
3 9 3 John 10
3 9 5 John 8
3 9 6 John 4
3 9 7 John 3
3 9 9 John 7
2 7 2 Mary 9
2 7 3 Mary 2
2 7 6 Mary 6
2 7 7 Mary 9
1 3 1 Jane 8
1 3 2 Jane 7
1 3 3 Jane 5
6 10 6 Rick 9
6 10 8 Rick 1
6 10 10 Rick 3

我需要的输出是,现在是 Rick 的一小部分:

month in    month out   month   student grades  
6 10 6 Rick 9
6 10 7 Rick 0
6 10 8 Rick 1
6 10 9 Rick 0
6 10 10 Rick 3

结论:我只需要添加一个学生从开始到结束的缺失句号。考虑到 Rick 的示例,我们只将第 7 个月和第 9 个月添加为 0 级。你们中的一些人可以帮助我吗?

PS:我已经看到了其他一些已回答的问题。他们恰恰相反,因为他们认为所有数据都是从 1 到 n 开始的。他们没有像这个例子那样考虑随机月份。

最佳答案

您可以使用cross joinleft outer join 来做到这一点。 cross join 生成学生和月份之间的所有组合。 left outer join 引入匹配记录的数据。不匹配的记录得分为 0

以下假设某个地方的某个学生每个月都有成绩:

select s.month_in, s.month_out, m.month, s.student,
coalesce(sc.grades, 0) as grades
from (select distinct student, month_in, month_out from spanishcourse sc) s cross join
(select distinct month from spanishcourse sc) m left outer join
spanishcourse sc
on sc.student = s.student and sc.month = m.month;

关于sql - 将缺失的信息添加到表中? (考虑随机开始和结束月份),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com