我是一名SQL新手,我非常感谢在这个相当基本的问题上提供一些帮助。
select comp_table.*
from (select column_1,avg(column_2) as "avg"
from table_1, group by column_1) comp_table
→返回包含2列column_1
和avg
但如果我改为:
select comp_table.avg
from (select column_1,avg(column_2) as "avg"
from table_1, group by column_1) comp_table
→返回错误:无效的标识符“avg”
问题是我只需要选择avg
列,因此我无法select comp_table.*
。你能帮忙吗?
另外,如果您可以为查询提供一些调整技巧,那就太棒了。
答案 0 :(得分:4)
当列名未包含在“双引号”中时,名称将标准化为大写;因此,您要求列“AVG”,而列名实际上是“平均”:
select comp_table."avg"
from (select column_1,avg(column_2) as "avg"
from table_1, group by column_1) comp_table
答案 1 :(得分:1)
您使用的数据库服务器是什么? AVG
是我所知道的所有内置函数,所以你需要正确地转义它 - 这取决于数据库服务器。在MS SQL Server中,它是[avg]
答案 2 :(得分:0)
我不知道您使用的是哪个DBMS,但是有些人会因为您使用.avg
而感到不安(因为保留了avg
)并要求您将其转义。
尝试将其从avg
更改为average
,就像测试一样:
SELECT comp_table.average
FROM (SELECT column_1, avg(column_2) as average
FROM table_1, GROUP BY column_1) comp_table