我正在寻找薪水低于平均工资的员工人数。
我对蜂巢和挣扎有点陌生,有人可以解释我的陈述有什么问题并请我帮忙吗?
我的陈述-
SELECT COUNT(*) FROM(SELECT wage, AVG(wage) AS avgWage FROM emp_wages) WHERE wage < avgWage;
错误-
ParseException line 1:82 cannot recognize input near 'where' 'wage' '<' in subquery source
任何帮助表示赞赏!
答案 0 :(得分:1)
语法错误。派生表应为别名。
(on "<KeyPress-Left>" (setf dx -1))
(on "<KeyPress-Right>" (setf dx 1))
(on "<KeyRelease-Right>" (setf dx 0))
(on "<KeyRelease-Left>" (setf dx 0))
明智的查询,需要进行更改。
SELECT COUNT(*)
FROM (SELECT wage, AVG(wage) AS avgWage FROM emp_wages group by wage) t --alias needed here
WHERE wage < avgWage;
答案 1 :(得分:0)
问题是AVG是聚合函数。如果要映射一对多关系,则需要使用交叉联接功能:
select
count(*), avg(v1.wage),
sum(case when v.wage < v2.avgwage then 1 else 0 end) below_average
from
emp_wages v cross join (select avg(wage) as avgwage from emp_wages) as v2
答案 2 :(得分:0)
SELECT COUNT(*)
FROM (SELECT wage, AVG(wage) AS avgWage FROM emp_wages group by wage)avg --group by needed
WHERE wage < avgWage;
答案 3 :(得分:0)
正确的查询应为:
select count(*) where wage <(select avg(wage) from emp_wages);
由于工资和avgWage在子查询中,因此出现解析错误。