簡體   English   中英

我可以將 CASE 語句與 JOIN 一起使用嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM