Oracle经典查询练手第三篇

--1. 各个部门平均、最大、最小工资、人数,按照部门号升序排列。 
select avg(salary),max(salary),min(salary),count(*) from employees group by department_id order by department_id;

--2. 各个部门中工资大于5000的员工人数。  
select count(*) from employees where salary >5000 group by department_id ;

--3. 各个部门平均工资和人数,按照部门名字升序排列。  
select dept.DEPARTMENT_NAME,avg(emp.salary),count(*)
from EMPLOYEES  emp,DEPARTMENTS dept
where emp.department_id = dept.department_id
group by dept.DEPARTMENT_NAME
order by dept.DEPARTMENT_NAME asc;

--4. 列出每个部门中有同样工资的员工的统计信息,列出他们的部门号,工资,人数。  
select a.department_id,a.salary ,count(*)
from employees a,employees b
where a.department_id = b.department_id and a.salary = b.salary and a.employee_id <> b.employee_id
group by a.department_id,a.salary;    

--5. 列出同部门中工资高于1000 的员工数量超过2 人的部门,显示部门名字、地区名称。  
SELECT D.DEPARTMENT_NAME,L.CITY,COUNT(*)  
FROM EMPLOYEES E,DEPARTMENTS D,LOCATIONS L  
WHERE  E.DEPARTMENT_ID = D.DEPARTMENT_ID AND 
       D.LOCATION_ID   = L.LOCATION_ID    AND 
       E.SALARY > 1000  
GROUP BY D.DEPARTMENT_NAME,L.CITY  
HAVING COUNT(*) > 2;  

--6. 哪些员工的工资,高于整个公司的平均工资,列出员工的名字和工资(降序)。 
SELECT FIRST_NAME || ' ' || LAST_NAME,SALARY  
FROM EMPLOYEES  
WHERE SALARY > (  
        SELECT AVG(SALARY)  
        FROM EMPLOYEES  
        )  
ORDER BY SALARY DESC; 

--7. 哪些员工的工资,介于50号 和80号部门平均工资之间。 
SELECT FIRST_NAME || ' ' || LAST_NAME AS NAME,SALARY  
FROM EMPLOYEES  
WHERE SALARY  
BETWEEN 
      (SELECT AVG(SALARY) FROM EMPLOYEES  
       WHERE DEPARTMENT_ID = 50)  
AND (SELECT AVG(SALARY) FROM EMPLOYEES  
      WHERE DEPARTMENT_ID = 80); 
      
--8. 所在部门平均工资高于5000 的员工名字。  
SELECT FIRST_NAME || ' ' || LAST_NAME AS NAME,SALARY  
FROM EMPLOYEES  
WHERE DEPARTMENT_ID IN 
        (SELECT DEPARTMENT_ID FROM EMPLOYEES  
         GROUP BY DEPARTMENT_ID  
         HAVING AVG(SALARY) > 5000);  

--9. 列出各个部门中工资最高的员工的信息:名字、部门号、工资。  
select FIRST_NAME || ' ' || LAST_NAME,department_id,salary
from employees
where (department_id,salary )in
 (
  select department_id ,max(salary) from employees
  group by department_id
 );

--10. 最高的部门平均工资是多少。 
select max(avg(salary)) from employees group by department_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值