这里是 sql 新手。我试图只选择一列中的值大于该列平均值的元组。问题是,我正在使用的关系是在 FROM 子句中创建的,因为我需要添加一个转换(并且还需要一个子集)。
我最初使用的是 WHERE 子句,但这个 SO 答案让我相信我可以通过使用 HAVING 子句来解决问题。但是,我仍然收到此错误:
表“msan692db.l”不存在
如何以一种对我在 FROM 子句中创建的别名不视而不见的方式进行必要的比较?我想我可以在 WHERE/HAVING 子句中明确地重新创建所需的关系,但我稍后会添加更多,这似乎非常低效。
这是我的代码:
select *
from
(select *, ascii(substring(CREDIT_Grade,1,1)) + cast(substring(CREDIT_Grade,2,1) as unsigned) * .2 as CREDIT_Grade_num
from loanstats
where Loan_duration = 36) L
group by loan_ID
having
Interest_Rate > (select avg(Interest_Rate) from L)
编辑:顺便说一句,我已经确认 FROM 子句本身返回一个有效的关系。