学生学术史评分的SQL查询问题
如果我有一个包含学生过去成绩历史的student_grade_history表,例如:学生学术史评分的SQL查询问题,sql,Sql,如果我有一个包含学生过去成绩历史的student_grade_history表,例如: student | course | year | grade --------+----------+------------+---------- steve | Math1A | 2018spring | A+ steve | English | 2018spring | B- steve | Science | 2018spring | B+
student | course | year | grade
--------+----------+------------+----------
steve | Math1A | 2018spring | A+
steve | English | 2018spring | B-
steve | Science | 2018spring | B+
steve | Biology | 2018spring | C
我想把每个学生得到的A+,A,A-分为A级和B+,B,B-分为B级和C+,C,C-分为C级
我可以创建如下表:
student | year | # of A received | # of B received | # of C received
--------+------------+-----------------+-----------------+-----------------
steve | 2018spring | 1 | 2 | 1
然而,我正在尝试创建一个基于student_grade_history table的具有以下格式的表,但是我想不出一种方法来实现它
student | year | grade | count
--------+------------+-------+------
steve | 2018spring | A | 1
steve | 2018spring | B | 2
steve | 2018spring | C | 1
我可以得到一些提示吗?您似乎想要聚合:
select student, year, left(grade, 1) as grade, count(*)
from student_grade_history
group by student, year, left(grade, 1);
并非所有数据库都支持left,但大多数都支持。所有这些都具有功能,即使语法稍有不同。用您正在使用的数据库标记您的问题。