--請思考如下問題?
--查詢所有員工的每個(gè)月工資總和捧挺,平均工資虑绵?
select sum(sal) as 月工資總和,avg(sal) as 平均工資
from emp;
--查詢工資最高和最低的工資是多少?
select max(sal),min(sal) from emp;
--查詢公司的總?cè)藬?shù)闽烙?
select count(*) from emp;
--查詢有獎(jiǎng)金的總?cè)藬?shù)翅睛?
一種理解:獎(jiǎng)金不為空即為有獎(jiǎng)金
select count(*) from emp where comm is not null;
另一種理解:獎(jiǎng)金>0才是有獎(jiǎng)金
select count(*) from emp where nvl(comm,0) > 0;
--練習(xí)一
--1.查詢部門20的員工,每個(gè)月的工資總和及平均工資黑竞。
select sum(sal),avg(sal) from emp where deptno in 20;
--2.查詢工作在CHICAGO的員工人數(shù)捕发,最高工資及最低工資。
select count(*),max(sal),min(sal)
from emp join dept
on emp.deptno = dept.deptno
where loc in 'CHICAGO';
--3.查詢員工表中一共有幾種崗位類型很魂。
select count(distinct deptno) from emp;
--思考
--查詢每個(gè)部門的平均工資扎酷?
select avg(sal),deptno from emp group by deptno;
--練習(xí)二
--1.查詢每個(gè)部門的部門編號,部門名稱遏匆,部門人數(shù)法挨,最高工資,最低工資拉岁,工資總和坷剧,平均工資。
select emp.deptno,dept.dname,count(*),
max(sal),min(sal),sum(sal),avg(sal)
from emp join dept
on emp.deptno = dept.deptno
group by emp.deptno,dept.dname;
--2.查詢每個(gè)部門喊暖,每個(gè)崗位的部門編號惫企,部門名稱,崗位名稱陵叽,部門人數(shù)狞尔,最高工資,最低工資巩掺,工資總和偏序,平均工資。
select emp.deptno,dname,job,
count(*),max(sal),min(sal),sum(sal),avg(sal)
from emp join dept
on emp.deptno = dept.deptno
group by emp.deptno,dname,job;
--3.查詢每個(gè)經(jīng)理所管理的人數(shù)(有多少個(gè)人有上級經(jīng)理)胖替,經(jīng)理編號研儒,經(jīng)理姓名,要求包括沒有經(jīng)理的人員信息独令。
select count(*),manager.empno,manager.ename
from emp worker,emp manager
where worker.mgr = manager.empno(+)
group by manager.empno,manager.ename;
--練習(xí)三
--1.查詢部門人數(shù)大于2的部門編號端朵,部門名稱,部門人數(shù)燃箭。
select dept.deptno,dept.dname,count(dept.deptno)
from emp join dept
on emp.deptno = dept.deptno
group by dept.deptno,dept.dname
having count(dept.deptno) > 2;
--2.查詢部門平均工資大于2000冲呢,且人數(shù)大于2的部門編號,部門名稱招狸,部門人數(shù)敬拓,部門平均工資邻薯,并按照部門人數(shù)升序排序。
select dept.deptno,dname,count(dept.deptno),avg(sal)
from emp join dept
on emp.deptno = dept.deptno
group by dept.deptno,dname
having avg(sal) > 2000 and count(dept.deptno) > 2
order by count(*) asc;
--課后作業(yè)
--1.查詢部門平均工資在2500元以上的部門名稱及平均工資乘凸。
select dname,avg(sal)
from emp join dept
on emp.deptno = dept.deptno
group by dname
having avg(sal) > 2500;
--2.查詢員工崗位中不是以“SA”開頭并且平均工資在2500元以上的崗位及平均工資厕诡,并按平均工資降序排序。
select job,avg(sal)
from emp
group by job
having avg(sal) > 2500 and job not like 'SA%';
--3.查詢部門人數(shù)在2人以上的部門名稱营勤、最低工資木人、最高工資,并對求得的工資進(jìn)行四舍五入到整數(shù)位。
select dname,round(min(sal)),round(max(sal))
from emp join dept
on emp.deptno = dept.deptno
group by dname
having count(dname) > 2;
--4.查詢崗位不為SALESMAN冀偶,工資和大于等于2500的崗位及每種崗位的工資和醒第。
select job,sum(sal)
from emp join dept
on emp.deptno = dept.deptno
group by job
having job not in 'SALESMAN'
and sum(sal) >= 2500;
--5.顯示經(jīng)理號碼和經(jīng)理姓名,這個(gè)經(jīng)理所管理員工的最低工資进鸠,沒有經(jīng)理的KING也要顯示稠曼,不包括最低工資小于3000的,按最低工資由高到低排序客年。
--先查詢經(jīng)理所管理的員工有哪些
select manager.ename managerName,
manager.empno managerEmpno,worker.ename,
worker.sal from
emp worker,emp manager
where worker.mgr = manager.empno(+);
--再查詢 經(jīng)理所管理的員工的最低工資
select managerEmpno,managerName,
min(sal) minSal
from (select manager.ename managerName,
manager.empno managerEmpno,
worker.ename,worker.sal from
emp worker,emp manager
where worker.mgr = manager.empno(+))
group by managerName,managerEmpno;
--所以最終解法為
select manager.empno,manager.ename,tabminsal.minSal
from emp worker, emp manager,
(select managerEmpno,managerName,min(sal) minSal
from (select manager.ename managerName,manager.empno
managerEmpno,worker.ename,worker.sal from
emp worker,emp manager
where worker.mgr = manager.empno(+))
group by managerName,managerEmpno) tabminsal
where worker.mgr = manager.empno(+)
and manager.ename = tabminsal.managerName
and tabminsal.minSal >= 3000
order by tabminsal.minSal desc;
我一直有一種直覺 上題解法一定有簡單得不能再簡單的解法
如何有大神愿意不吝賜教感激不盡霞幅。。
嗯嗯量瓜。司恳。還是自己找到咯最簡的解法 。绍傲。上面的解法居然是錯(cuò)誤的解法扔傅。。
不得不說學(xué)渣就是渣渣L瘫A匀!8茏荨\ⅰ!比藻!沒錯(cuò)這個(gè)學(xué)渣不是別人就是我自
己B亮俊!R住B丁!群凶!渣渣2宓:謇薄G肷摇T病!
正確解法
select worker.mgr,manager.ename,min(worker.sal) minsal from
emp worker,emp manager
where worker.mgr = manager.empno(+)
group by worker.mgr,manager.ename
having min(worker.sal) > = 3000
order by minsal desc;
--6.寫一個(gè)查詢毅弧,顯示每個(gè)部門最高工資和最低工資的差額气嫁。
select (max(sal)-min(sal))
from emp
group by deptno;
分割線
博主為咯學(xué)編程:父母不同意學(xué)編程,現(xiàn)已斷絕關(guān)系;戀人不同意學(xué)編程够坐,現(xiàn)已分手;親戚不同意學(xué)編程寸宵,現(xiàn)已斷絕來往;老板不同意學(xué)編程,現(xiàn)已失業(yè)三十年。元咙。梯影。。庶香。甲棍。如果此博文有幫到你歡迎打賞,金額不限赶掖。感猛。。