将 SQL 中具有相同 ID 的不同列的字段相乘?
Multiplying fields from separate columns which have the same ID in SQL?
我有两个 table 由一个 ID 连接...
table 1
- Assessment ID
- Module ID
- Assessment Weighting
table 2
- ID
- AssessmentID
- ModuleID
- UserID
- MarkFrom100
一个评估可以有很多学生参加评估。
例如
一个模块有两个评估,一个占 60%,另一个占 40%。在 table 2 中,我想从 table 1 中获取权重值并将其与 100 中的标记相乘。
SELECT * FROM Assessment, ModuleAssessmentUser WHERE
INNER JOIN moduleassementuser.assessmentID on Assessment.assessmentID
MULTIPLY AssessmentWeighting BY MarkFrom100 AS finalmark
UserID = 1
我知道这有点过时了,但我真的不知道还能怎么办。
我的 SQL 知识有限,如有任何帮助,我们将不胜感激!
您可以在查询中使用 SUM
函数,该函数将在子查询中对特定组的所有数据求和,您可以将总和乘以权重
子查询:
SELECT ModuleID, AssessmentID, UserID, SUM(MarkFrom100) as Total
FROM Table_2
GROUP BY ModuleID
然后将此子查询用作主查询中的 table :
SELECT T1.Assessment_ID, T1.ModuleID, Q1.UserID (Q1.Total * T1.Assessment_Weighting) as FinalMark
FROM (SELECT ModuleID, UserID, SUM(MarkFrom100) as Total
FROM Table_2
GROUP BY ModuleID) AS Q1
INNER JOIN Table_1 as T1 on T1.ModuleID = Q1.ModuleID
-- WHERE T1.ModuleID = 2 -- a particular module ID
GROUP BY ModuleID;
请注意,WHERE
语句在注释中。如果你想要整个数据,删除它,如果你想要特定数据,使用它^^
注意:
我没有你的数据库,所以可能需要一些时间,但主要思想就在那里
我有两个 table 由一个 ID 连接...
table 1
- Assessment ID
- Module ID
- Assessment Weighting
table 2
- ID
- AssessmentID
- ModuleID
- UserID
- MarkFrom100
一个评估可以有很多学生参加评估。 例如 一个模块有两个评估,一个占 60%,另一个占 40%。在 table 2 中,我想从 table 1 中获取权重值并将其与 100 中的标记相乘。
SELECT * FROM Assessment, ModuleAssessmentUser WHERE
INNER JOIN moduleassementuser.assessmentID on Assessment.assessmentID
MULTIPLY AssessmentWeighting BY MarkFrom100 AS finalmark
UserID = 1
我知道这有点过时了,但我真的不知道还能怎么办。
我的 SQL 知识有限,如有任何帮助,我们将不胜感激!
您可以在查询中使用 SUM
函数,该函数将在子查询中对特定组的所有数据求和,您可以将总和乘以权重
子查询:
SELECT ModuleID, AssessmentID, UserID, SUM(MarkFrom100) as Total
FROM Table_2
GROUP BY ModuleID
然后将此子查询用作主查询中的 table :
SELECT T1.Assessment_ID, T1.ModuleID, Q1.UserID (Q1.Total * T1.Assessment_Weighting) as FinalMark
FROM (SELECT ModuleID, UserID, SUM(MarkFrom100) as Total
FROM Table_2
GROUP BY ModuleID) AS Q1
INNER JOIN Table_1 as T1 on T1.ModuleID = Q1.ModuleID
-- WHERE T1.ModuleID = 2 -- a particular module ID
GROUP BY ModuleID;
请注意,WHERE
语句在注释中。如果你想要整个数据,删除它,如果你想要特定数据,使用它^^
注意:
我没有你的数据库,所以可能需要一些时间,但主要思想就在那里