学生学术史评分的SQL查询问题

学生学术史评分的SQL查询问题,sql,Sql,如果我有一个包含学生过去成绩历史的student_grade_history表,例如: student | course | year | grade --------+----------+------------+---------- steve | Math1A | 2018spring | A+ steve | English | 2018spring | B- steve | Science | 2018spring | B+

如果我有一个包含学生过去成绩历史的student_grade_history表,例如:

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,但大多数都支持。所有这些都具有功能,即使语法稍有不同。

用您正在使用的数据库标记您的问题。