mysql - 如何在单个 mysql select 语句中使用多个 where 子句?

标签 mysql sql

我有一个名为 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 表格中进行计算的。

Image showing marksheet

最佳答案

您不能使用多个 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/

相关文章:

mysql - JOIN 2个字段的表

php - 我无法访问 Laravel 5 中的原始 PDO 实例

mysql - 2 表列出错误在哪里(帮助)

sql - SQL Server中有类似 "Only IN"这样的关键字吗?

sql - 使用 SQL 查找数据组中的缺失值

sql - 我可以以增量方式获得 SUM(Qte)

MySQL Workbench : Error Code 1452. 无法添加或更新子行:外键约束失败

mysql - 在MySQL中查找 "next"最高id

php - 我怎样才能不时地从我的数据库中删除一行

php - MySQL 奇怪的慢查询