[英]Can I use CASE statement with a JOIN?
我有 2 個包含值的表:
CREATE TABLE students (
ids int AUTO_INCREMENT PRIMARY KEY,
name varchar(100) DEFAULT NULL,
surname varchar(100) DEFAULT NULL
);
CREATE TABLE register (
idr int AUTO_INCREMENT PRIMARY KEY,
data_ora datetime DEFAULT NULL,
idstu int DEFAULT NULL,
grade int DEFAULT NULL,
INDEX idstu (idstu),
);
並且要求是:2015年學生成績列表,看平均分(10、9-非常好,8,7-好,6,5-滿意,4-0-不好)
我想使用 CASE 語句,但我不知道如何將它與 JOIN 語句一起使用。
我試過這個:
SELECT name, surname, ROUND(avg(nota),2) as average
JOIN register ON students.ids = register.idstu,
CASE average
WHEN 10 THEN 'Very good'
WHEN 9 THEN 'Very good'
WHEN 8 THEN 'Good'
WHEN 7 THEN 'Good'
WHEN 6 THEN 'satisfactorily'
WHEN 5 THEN 'satisfactorily'
ELSE 'Not good'
END AS mark
FROM students
WHERE YEAR(data_ora) = 2015;
但是我收到一個錯誤 - 字段列表中的未知列“平均”。
有任何想法嗎?
我認為您的查詢順序不正確。 正確的查詢應該看起來很像 -
SELECT name, surname, CASE WHEN ROUND(avg(nota),2) >= 9 THEN 'Very good'
WHEN ROUND(avg(nota),2) >= 7 THEN 'good'
WHEN ROUND(avg(nota),2) >= 5 THEN 'satisfactorily'
ELSE 'Not good' END AS mark
FROM students
JOIN register ON students.ids = register.idstu
WHERE YEAR(data_ora) = 2015
GROUP BY name, surname;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.