我有一个名为 marksheet 的表,用于存储学生的分数。我想从每个单元考试中取出 20% 的分数,从每个每周测试中取出 30%,从期末考试中取出 50%。 Unit Exams、Weekly Tests 和 Final exam 的所有名称都存储在一个列名 Name_of_exam
下。我可以用
SELECT regd,
Sum(mark_score)/sum(Full_mark)*20 as scored
FROM marksheet
WHERE Name_of_exam='First Unit Exam'
OR Name_of_exam='Second Unit Exam'
OR Name_of_exam='Third Unit Exam'
GROUP BY regd;
但问题是我不知道我怎么能去掉学生打分的30%:
Where (Name_of_exam='第一周测试
或 Name_of_exam='第二周测试'
或 Name_of_exam='第三周测试')
50% 的分数得分 Where Name_of_exam='Final Exam'
。在同一个 select 语句中,因为我必须执行多个 where 子句。请帮忙。我还附上了我是如何在 Excel 表格中进行计算的。
最佳答案
您不能使用多个 WHERE
部分,但始终可以使用逻辑运算符来连接条件。
此WHERE
将找到分数低于您的阈值的结果:
SELECT regd, names, subjects,
sum( score ) * (CASE WHEN (Name_of_exam='First Weekly Test or Name_of_exam='Second Weekly Test' or Name_of_exam='Third Weekly Test') THEN 0.2
WHEN ( Name_of_exam='First Unit Exam' or Name_of_exam='Second Unit Exam' OR Name_of_exam='Third Unit Exam') THEN 0.3
WHEN ( Name_of_exam='Final Exam' ) THEN 0.5 )
AS scored
FROM marksheet
GROUP BY regd, names, subjects, test_type
关于mysql - 如何在单个 mysql select 语句中使用多个 where 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240195/