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 错误,
更新了其他尝试:
这会导致每个学生 ID 的总行数
select MarksDetails.StudentId , COUNT(MarksDetails.StudentId ) as count from MarksDetails
group by MarksDetails.StudentId
结果为 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
我正在尝试根据 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 错误,
更新了其他尝试:
这会导致每个学生 ID 的总行数
select MarksDetails.StudentId , COUNT(MarksDetails.StudentId ) as count from MarksDetails group by MarksDetails.StudentId
结果为 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