我有一些代码行,但不知怎的它不会工作。我想用名称“diem”来调用这个列round(),但是diem>=1会使它成为无效的标识符。有人能帮忙吗?
select id, name, round(avg(
decode(grade, 'A+', 4.5,'A', 4,
'A-',3.5, 'B+',3, 'B',2.5, 'B-', 2,
'C+', 1.5, 'C', 1, 'C-',0.5
)), 1) as***DIEM***
from takes t join student s
using (id)
where tot_cred >= 128
and***DIEM***>= 1
group by id, name;
1条答案
按热度按时间dldeef671#
您希望对聚合函数的结果进行筛选:为此,需要使用
having
从句而不是where
条款。此外,您不能访问在中定义的别名
select
合同条款where
条款(或having
(oracle中的子句)。您需要重复表达式或使用派生表(子查询或cte)。
在这里,将解码移到子查询可能更简单。假设
grades
来自takes
表格: