我尝试了一个sql但不起作用
选择cname,avg(salary)from Company as co,Works as wo,其中co.CID=wo.CID and wo.salary>(选择avg(salary)from Company as c,Works as w,其中c.CID=w.CID and c.cname='WIPRO');
员工(EID,EName,城市)
工时(EID、CID、工资)
公司(CID、CName、城市)
创建表Employee(eid int主键,ename varchar(6),city varchar(6))
创建表工时(eid int,cid int主键,salary int)
创建表Company(cid int,cname varchar(6),city varchar(6))
alter table Works添加外键(eid)引用员工(eid)
alter table Works添加外键(cid)引用公司(cid)
试试看:
Select cname
FROM
(select cname,cid,avg(salary) as avg_sal
from works w
join company c
on w.cid = c.cid
group by w.cid,w.cname
)a,
(
select avg(salary) as avg_wipro
from works w
join company c
on w.cid = c.cid
and ccname='Wipro'
)b
WHERE a.avg_sal > b.avg_wipro
学习使用正确的、明确的、标准的join
语法。
话虽这么说,你已经很接近了。您只需要一个having
子句:
select c.cname, avg(w.salary)
from Company c join
Works w
on c.cid = w.cid
group by c.cname
having avg(w.salary) > (select avg(w2.salary)
from Company c2 join
Works w2
on c2.cid = w2.cid
where c2.cname = 'Wipro'
);
备注:
from
子句中使用逗号。AVG()
时,应具有分组依据
。having
子句中。问题内容: 我需要获得fname,lname,比平均工资低400.00美元的员工薪水,即使在加薪10%之后。 我能够使薪水低于平均薪水的员工,但不确定如何使加薪后的薪水低于400美元的员工。 我正在使用MySQL。谢谢你。 这给了我工资低于平均工资的员工: 我当时在想这样的事情,但这是行不通的。未知专栏新闻: 问题答案: 您有一个正确的想法,就是不能在这样的子句中使用别名。只需直接使用公式,就可以
有两张桌子: 问题是如何找到哪个经理支付给他的员工的平均工资(+奖金)最高?
我怎样才能得到公司员工的平均工资,他们的工资超过了工资限制?我想首先我需要得到一个所有薪水的列表,并使用mapToInt和average进行筛选,但是。。。什么都不管用(( }
问题内容: 我正在写一个查询,以查找收入高于其部门平均工资的员工。我需要显示员工ID,薪水,部门ID和该部门的平均工资。 我有一个几乎可以正常使用的查询,但它一直显示“ ORA-00904:“ AVG_SAL”:无效标识符”错误。我正确地做到了吗?为什么会出现此无效的标识符错误? 问题答案: 我不相信您可以在WHERE子句中引用列别名(在这种情况下为avg_sal)。 您需要重复该内部查询,即:
员工属于一个部门(外键=D_ID)。员工有一个SSN(主键)、姓名、工资和D_ID。
问题内容: 不太确定如何获得这个。我有一个职员表,我需要找到平均工资。我知道我可以使用use 。但是,诀窍是我需要找到拥有5名以上职员的部门的平均值。我不确定是否应使用分组依据或使用方式。谢谢! 问题答案: