Mysql 将case语句相乘
我想用一个案例来说明一个学生的平均成绩。当我使用案例陈述时,当学分与实际分数相乘时,我只得到0作为解决方案。我真的很困惑我做错了什么Mysql 将case语句相乘,mysql,select,case,Mysql,Select,Case,我想用一个案例来说明一个学生的平均成绩。当我使用案例陈述时,当学分与实际分数相乘时,我只得到0作为解决方案。我真的很困惑我做错了什么 select *, sum(c.credits * grade), sum(c.credits), CASE grade WHEN 'A' THEN 4.0 WHEN 'A-' THEN 3.67 WHEN 'B+' THEN 3.33 WHEN 'B' THEN 3 WHEN 'B-' THEN 2.67 WHEN 'C+' THEN 2.33 WHEN '
select *, sum(c.credits * grade), sum(c.credits),
CASE grade
WHEN 'A' THEN 4.0
WHEN 'A-' THEN 3.67
WHEN 'B+' THEN 3.33
WHEN 'B' THEN 3
WHEN 'B-' THEN 2.67
WHEN 'C+' THEN 2.33
WHEN 'C' THEN 2
WHEN 'C-' THEN 1.67
WHEN 'D+' THEN 1.33
WHEN 'D' THEN 1
WHEN 'D-' THEN 0.67
ELSE 0
END
from takes t join course c on t.course_id = c.course_id
group by t.ID;
我显示了一列
CASE grade
,其中包含某人获得的字母等级的正确gpa。我是否需要执行子查询以使用案例等级列?如果您试图用字符串(等级)乘以一个数字(学分),这就是为什么结果为零,请尝试将查询更改为:
SELECT
t.ID,
sum(
c.credits * (
CASE grade
WHEN 'A' THEN 4.0
WHEN 'A-' THEN 3.67
WHEN 'B+' THEN 3.33
WHEN 'B' THEN 3
WHEN 'B-' THEN 2.67
WHEN 'C+' THEN 2.33
WHEN 'C' THEN 2
WHEN 'C-' THEN 1.67
WHEN 'D+' THEN 1.33
WHEN 'D' THEN 1
WHEN 'D-' THEN 0.67
ELSE 0
END
)
),
sum(c.credits)
FROM
takes t
INNER JOIN course c ON
t.course_id = c.course_id
GROUP BY
t.ID;
这是有道理的。尝试将字符串与数字相乘。谢谢你的帮助。非常感谢!我会在可能的时候接受答案