我有一个学生表学生(LRN,名字,名字,级别ID)和一个成绩表成绩(科目ID,年级,级别ID,LRN,时间添加)我想显示所有学生的所有科目的成绩在网上。我厌倦了这个查询,但我得到了这个结果。
Query: SELECT student.LRN, student.fName, student.lName,
(SELECT grade.grade WHERE grade.subjectID = 'k2arts') AS 'k2arts',
(SELECT grade.grade WHERE grade.subjectID = 'k2math') AS 'k2math',
(SELECT grade.grade WHERE grade.subjectID = 'k2eng') AS 'k2eng',
(SELECT grade.grade WHERE grade.subjectID = 'k2valed') AS 'k2valed',
(SELECT grade.grade WHERE grade.subjectID = 'k2fil') AS 'k2fil'
from student RIGHT JOIN grade on grade.LRN=student.LRN
结果:查询结果
当
SELECT student.LRN, student.fName, student.lName,
case when grade.subjectID = 'k2arts' then grade.grade else null end AS 'k2arts',
case when grade.subjectID = 'k2math' then grade.grade else null end AS 'k2math',
case when grade.subjectID = 'k2eng' then grade.grade else null end AS 'k2eng',
case when grade.subjectID = 'k2valed' then grade.grade else null end AS 'k2valed',
case when grade.subjectID = 'k2fil' then grade.grade else null end AS 'k2fil'
from student
LEFT JOIN grade on grade.LRN=student.LRN
并最终使用假聚合函数删除null
SELECT student.LRN, student.fName, student.lName,
min(case when grade.subjectID = 'k2arts' then grade.grade else null end) AS 'k2arts',
min(case when grade.subjectID = 'k2math' then grade.grade else null end) AS 'k2math',
min(case when grade.subjectID = 'k2eng' then grade.grade else null end) AS 'k2eng',
min(case when grade.subjectID = 'k2valed' then grade.grade else null end) AS 'k2valed',
min(case when grade.subjectID = 'k2fil' then grade.grade else null end) AS 'k2fil'
from student student.LRN, student.fName, student.lName
LEFT JOIN grade on grade.LRN=student.LRN
group by
尝试:
SELECT student.LRN, student.fName, student.lName,
CASE WHEN grade.subjectID = 'k2arts' THEN grade.grade END AS 'k2arts',
CASE WHEN grade.subjectID = 'k2math' THEN grade.grade END AS 'k2math',
CASE WHEN grade.subjectID = 'k2eng' THEN grade.grade END AS 'k2eng',
CASE WHEN grade.subjectID = 'k2valed' THEN grade.grade END AS 'k2valed',
CASE WHEN grade.subjectID = 'k2fil' THEN grade.grade END AS 'k2fil'
from student
LEFT JOIN grade
on grade.LRN=student.LRN ;
您希望在每个子查询中建立学生的关系。您不需要在主查询中加入 Grade
,因为除了通过子查询之外,您没有使用其任何值,在这种情况下,子查询位于不相关的上下文中:
SELECT student.LRN, student.fName, student.lName,
(SELECT grade.grade FROM grade WHERE grade.subjectID = 'k2arts' AND grade.LRN=st.LRN) AS 'k2arts',
(SELECT grade.grade FROM grade WHERE grade.subjectID = 'k2math' AND grade.LRN=st.LRN) AS 'k2math',
(SELECT grade.grade FROM grade WHERE grade.subjectID = 'k2eng' AND grade.LRN=st.LRN) AS 'k2eng',
(SELECT grade.grade FROM grade WHERE grade.subjectID = 'k2valed' AND grade.LRN=st.LRN) AS 'k2valed',
(SELECT grade.grade FROM grade WHERE grade.subjectID = 'k2fil' AND grade.LRN=st.LRN) AS 'k2fil'
from student st
除了从课堂维度查看数据之外,点击左侧【学生成绩】,可以查看学生维度的统计数据,关联mooc 或 spoc 课程的慕课堂,可以在学习表现中看到学生的视频观看个数、次数、时长、讨论区主题数、评论数、回复数、线上课程的学习总成绩。 提示:学生在MOOC/SPOC中观看视频、参与互动的数据每天一次同步到慕课堂后台(课程相关数据隔天更新),学生在MOOC/SPOC 中参加测验/作业的成绩需老师确认后才会同步
我必须做一个程序,收集作业的总数和学生对每个作业的评分。程序返回每个学生的作业分数。这是我现在的输出窗口: 班上有多少学生?2用户输入=assignmentLimit 学生1:74用户输入 学生2:85用户输入 学生1分 但是在学生1分部分,我希望它显示41.0和74.0。对于学生2分,我想显示52.0和85.0。我该怎么做?这是收集和显示标记的部分:
项目分析 在学生成绩管理系统中,我们将实现7大功能,分别是添加记录、显示记录、修改记录、删除记录、查找记录、排序记录以及退出系统。 需求分析 添加记录 这个功能主要是添加学生的信息,当用户在功能菜单中选择数字1时,会进入添加记录模块,提示用户输入学生的学号、姓名、数学成绩、语文成绩。当用户输入完毕后,会提示用户是否继续添加,Y表示继续,N表示返回。需要注意的是,在添加学号时不能重复,如果输入重复的
学生成绩管理系统 案例描述 案例要求模拟开发一个学生成绩管理系统,此系统具有以下功能: (1)添加学生信息,包括学号、姓名、语文、数学成绩; (2)显示学生信息,将所有学生信息打印输出; (3)修改学生信息,可以根据姓名查找到学生,然后可以修改学生姓名、成绩项; (4)删除学生信息,根据学号查找到学生,将其信息删除; (5)查找学生信息,根据学生姓名,将其信息打印输出; (6)按学生总成绩进行从高
无论是自建后台还是QQ轻游戏后台的开发者,都需要进行成绩的上报。上报的时机有两个 游戏正常结束 玩家中途退出 两种情况均需要将成绩上报至QQ轻游戏后台。需要注意的是无论正常退出还是中途退出,都需要将当局游戏内所有的人的成绩都进行上报。 例 ABCD 四人参加游戏,A 中途退出,A 需将 ABCD 四人成绩一律上传。如是单人游戏,也需要将单人成绩上传。 正常退出:正常上报所有人成绩 中途退出:将所有
我的数据库中有三个表。第一个是以student_id为主键的学生。第二个是以course_id为主键的课程表,最后我有一个id_student和id_course为外键的成绩表,以及一个成绩字段。我想获取成绩表中缺少成绩的学生的详细信息。我已经搜索了堆栈溢出,但找不到我正在寻找的确切答案。到目前为止,我尝试的是以下查询: 如果我在没有where条件的情况下尝试同样的查询,我会得到39行,但我应该得