【发布时间】:2013-10-22 19:02:39
【问题描述】:
这里是 sql 新手。我试图只选择一列中的值大于该列平均值的元组。问题是,我正在使用的关系是在 FROM 子句中创建的,因为我需要添加一个转换(并且还需要一个子集)。
我最初使用 WHERE 子句,但 this SO answer 让我相信我可以通过使用 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 子句本身返回一个有效的关系。
【问题讨论】:
标签: mysql sql having having-clause aggregates