我有這樣的表結構
學生
| ID | 學生姓名 |
|---|---|
| 1 | AAAA |
| 2 | BBBB |
主題
| ID | 主題名稱 |
|---|---|
| 1 | 主題1 |
| 2 | 主題2 |
分數
| 學生卡 | 主題ID | 分數 |
|---|---|---|
| 1 | 1 | 35 |
| 1 | 2 | 34 |
| 2 | 1 | 54 |
| 2 | 2 | 42 |
要求就像,列出所有通過(所有科目> = 35分)或不及格(任何科目<35分)狀態的學生。有什么建議嗎?
不確定在 if 條件下添加什么
select student.id, student.name, 'status (if marks.marks >= 35, Pass, Fail)'
from student
inner join marks on marks.student_id = student.id
預期產出
| 學生卡 | 學生姓名 | 狀態 |
|---|---|---|
| 1 | AAAA | 失敗 |
| 2 | BBBB | 經過 |
uj5u.com熱心網友回復:
加入并按Student學生Marks分組。
然后使用CASE檢查每個學生的最低分數的運算式來獲取狀態:
SELECT s.id student_id, s.student_name,
CASE WHEN MIN(m.marks) >= 35 THEN 'Pass' ELSE 'Fail' END status
FROM Student s INNER JOIN Marks m
ON m.student_id = s.id
GROUP BY s.id;
我假設這id是表的主鍵Student。
如果不是,則將GROUP BY子句更改為:
GROUP BY s.id, s.student_name
查看演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/433446.html
