首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以使用带有联接的CASE语句吗?

我可以使用带有联接的CASE语句吗?
EN

Stack Overflow用户
提问于 2022-04-07 09:31:40
回答 1查看 99关注 0票数 -1

我有两个有值的表:

代码语言:javascript
运行
复制
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语句中使用它。

我试过这个:

代码语言:javascript
运行
复制
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;

但我在字段列表中得到了一个未知的列“平均值”。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-07 09:48:55

我认为您的查询顺序不正确。正确的查询应该是相似的-

代码语言:javascript
运行
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71779663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档