我有两个具有以下属性的表:
表:部门
dept_nbr
DEPT_NAME
dept_phone
dept_building
dept_mgr
表:员工
emp_nbr
emp_lname的
emp_fname
emp_phone
emp_dateofbirth
emp_date_hired
emp_nbr_of_dependents
删除emp_dept
dept_nbr = emp_dept
我需要:
每个部门
1。)总数没有。员工家属
2。)平均没有。家属 - 我在猜AVG
3。)总数没有。员工 - 我猜数(*)
有人可以帮我解决这个问题吗?以下是我的代码
select DEPT_NAME, AVG(EMP_NBR_OF_DEPENDENTs), count(emp_fname) as Total_No_of_Employees from dept,employee where DEPT_NBR = EMP_DEPT group by DEPT_NAME;
第二部分:
包括员工少于50人的部门
select DEPT_NAME, AVG(EMP_NBR_OF_DEPENDENTs), count(emp_fname) as Total_No_of_Employees from dept,employee where DEPT_NBR in (select EMP_DEPT from employee where count(emp_fname)<50) group by DEPT_NAME ;
我尝试了上述内容并收到错误1111
谢谢堆
答案 0 :(得分:0)
SELECT dept_name,SUM(emp_nbr_of_dependents),AVG(emp_nbr_of_dependents),COUNT(emp_nbr)
FROM deptartment JOIN employee ON dept_nbr=emp_dept
GROUP BY dept_name
HAVING COUNT(emp_nbr)<50
答案 1 :(得分:0)
可以在一个选择中组合更多聚合函数。
select DEPT_NAME,
sum(EMP_NBR_OF_DEPENDENTs) employee_dependents_sum,
AVG(EMP_NBR_OF_DEPENDENTs) avg_nbr_dependents,
count(emp_nbr) employee_count
from dept,employee
where DEPT_NBR = EMP_DEPT
group by DEPT_NAME
having employee_count < 50;
在WHERE
之前应用 GROUP BY
部分,然后在结果上应用HAVING
。