Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL案例给出了错误消息_Sql_Oracle11g - Fatal编程技术网

Oracle SQL案例给出了错误消息

Oracle SQL案例给出了错误消息,sql,oracle11g,Sql,Oracle11g,我正在尝试向查询中添加一个额外的列。基于平均工资,它应该写在下面或上面的栏中,但它不起作用。有什么问题 SELECT CONCAT(firstname, lastname) AS name FROM workers CASE WHEN salary < avg(salary) THEN 'BELOW' WHEN salary > avg(salary) THEN 'ABOVE' ELSE 'AVARAGE' END; 选择CONCAT(firstname,lastnam

我正在尝试向查询中添加一个额外的列。基于平均工资,它应该写在下面或上面的栏中,但它不起作用。有什么问题

SELECT CONCAT(firstname, lastname) AS name
FROM workers
CASE
  WHEN salary < avg(salary) THEN 'BELOW'
  WHEN salary > avg(salary) THEN 'ABOVE'
  ELSE 'AVARAGE'
END;
选择CONCAT(firstname,lastname)作为名称
来自工人
案例
当工资<平均工资时,则“低于”
当工资>平均工资时,则“高于”
还有“AVARAGE”
结束;

案例属于
选择
子句:

SELECT CONCAT(firstname, lastname) AS name
       (CASE WHEN salary < avg(salary) THEN 'BELOW'
             WHEN salary > avg(salary) THEN 'ABOVE'
             ELSE 'AVERAGE'
        END)
FROM workers;
选择CONCAT(firstname,lastname)作为名称
(当工资平均工资时,则“高于”
其他“平均”
(完)
来自工人;
这解决了第一个问题。下一个问题是,您有一个聚合函数,但没有聚合。您真正想要的似乎是一个分析函数:

SELECT CONCAT(firstname, lastname) AS name
       (CASE WHEN salary < AVG(salary) OVER () THEN 'BELOW'
             WHEN salary > AVG(salary) OVER () THEN 'ABOVE'
             ELSE 'AVERAGE'
        END)
FROM workers;
选择CONCAT(firstname,lastname)作为名称
(当工资<平均(工资)超过()时,则为“低于”
当薪资>平均(薪资)超过()时,则为“高于”
其他“平均”
(完)
来自工人;

说出它给您带来的错误会很有帮助。但是,谢谢你,这正是我想要的。你能解释一下“你有聚合功能但没有聚合”是什么意思吗?@dmbdnr。您的查询使用
avg()
——以及其他列——但没有
分组依据。