Sql table 中使用行数的总和

Sql Total Sum using no of row counts in a table

我正在尝试根据 StudentId 和 MarksTypeId 行数查找每个学生的总分。

我有3张桌子

MarksType

----------------------------------
MarksTypeId |  MarkType    | Marks   
----------------------------------
1           |    Writing   | 10        
2           |    Drawing   | 30        
3           |    Singing   | 20    
----------------------------------     

Students

--------------------------------
StudentId |  Name    | Address
--------------------------------
1         |    John  | USA     
2         |    Raja  | India       
3         |    Paul  | AUS     
--------------------------------   

MarksDetails      --  Has two foreign keys

-------------------------------------------------------   
MarksDetailsId |  MarksTypeId    |  StudentId | Date
-------------------------------------------------------
1              |    3            | 1          | 18 jan
2              |    3            | 1          | 18 jan
3              |    1            | 3          | 19 jan
-------------------------------------------------------

这是我想要的结果:

------------------------------------
StudentId |  Name     | Total Marks
------------------------------------
1         |    John   | 40     
2         |    Raja   | 0      
3         |    Paul   | 10     
------------------------------------

我的意思是如果约翰一天唱歌两次,那么使用 StudentId 和 MarksTypeId,我需要他的总分作为结果。

到目前为止我做了以下事情:

select  Sum(MarksType.Marks)  from MarksType inner join MarksDetails    on   MarksType.MarksTypeId=1

但是总和 returns 错误,

更新了其他尝试:

  1. 这会导致每个学生 ID 的总行数

    select MarksDetails.StudentId , COUNT(MarksDetails.StudentId ) as     count   from MarksDetails
    group by MarksDetails.StudentId
    
  2. 结果为 Marks,带有 studentid 和 markstypeid

    select  MarksType.Marks, MarksType.MarksTypeId , MarksDetails.StudentId   from MarksType inner join MarksDetails  on   MarksType.MarksTypeId =    MarksDetails.StudentId
    

我可以知道我做错了什么吗? 任何帮助都会很棒。

最终在 sql 开发人员的友好指导下,在做了一些 research 之后,这是具有所需结果的查询,可能对某些人有用,享受吧!

SELECT Student.StudentId, Student.Name, sum(MarksType.Marks) as TotalMarks
FROM
 MarksType
INNER JOIN
 MarksDetails on MarksType.MarksTypeId = MarksDetails.MarksTypeId
INNER  JOIN 
 Student on Student.StudentId =  MarksDetails.StudentId

 group by Student.Name,Student.StudentId