綜合練習(xí)

1.列出薪金高于部門30工作的所有員工的薪金的員工姓名和薪金、部門名稱、部門人數(shù)。
確定要使用的數(shù)據(jù)表:
emp:姓名、薪金
dept:部門名稱
emp:部門人數(shù)
確定已知關(guān)鍵字:雇員和部門
e.deptno = d.deptno;
①找出部門30工作的所有員工的薪金

select    sal
from  emp e
where e.deptno=30;

②如果返回的結(jié)果是多行單列,應(yīng)該在where里面使用子查詢語(yǔ)句,判斷詞有(in、any、all)
員工姓名和薪金

select e.ename,e.sal
from emp e
where sal>all(select  sal
                      from  emp e
                      where e.deptno=30);

③部門名稱

select e.ename,e.sal,d.dname
from emp e,dept d
where sal>all(select  sal
                      from  emp e
                      where e.deptno=30) and e.deptno=d.deptno;

④部門人數(shù)

select deptno dno,count(empno)
from emp
group by deptno;
select e.ename,e.sal,d.dname,temp.count
from emp e,dept d,(
   select deptno dno,count(empno) count
   from emp
   group by deptno
   )temp
where sal>all(select  sal
                      from  emp e
                      where e.deptno=30)  
                      and e.deptno=d.deptno 
                      and temp.dno=d.deptno;
chaxun.png

2.列出與scott從事相同工作的所有員工及部門名稱,部門人數(shù),及領(lǐng)導(dǎo)姓名。
確定相關(guān)聯(lián)的表:
emp表:?jiǎn)T工信息;
dept表:部門名稱;
emp表:統(tǒng)計(jì)部門人數(shù);
emp表:領(lǐng)導(dǎo)姓名
相關(guān)聯(lián)的字段:
雇員和部門:e.deptno=d.deptno
雇員和領(lǐng)導(dǎo):emp.mgr = memp.empno
①列出從事scott工作的員工,此查詢返回單行單列,一般用where或having條件

select job from emp where ename='SCOTT';
scott.png

②找到所有符合此要求的雇員信息

select e.ename,e.job,e.sal
from emp e
where e.job=(
            select job
            from emp
            where ename='SCOTT'
);

③部門名稱

select e.ename,e.job,e.sal,d.dname
from emp e,dept d
where e.job=(
            select job
            from emp
            where ename='SCOTT'
            and e.deptno=d.deptno);

④領(lǐng)導(dǎo)姓名

select e.ename,e.job,e.sal,d.dname,temp.count,
m.ename
from emp e,dept d,(
    select deptno dno,count(empno) count
    from emp
         group by deptno)temp,emp m
where e.job=(
    select job
    from emp 
    where ename='SCOTT') 
        and e.deptno=d.deptno
        and d.deptno=temp.dno
        and e.mgr=m.empno;

⑤消除掉scott的用戶

select e.ename,e.job,e.sal,d.dname,temp.count,
m.ename
from emp e,dept d,(
    select deptno dno,count(empno) count
    from emp
         group by deptno)temp,emp m
where e.job=(
    select job
    from emp 
    where ename='SCOTT') 
        and e.deptno=d.deptno
        and d.deptno=temp.dno
        and e.mgr=m.empno
        and e.ename<>'SCOTT';
scott.png

3.列出薪金比“SMITH”或“ALLEN”多的所有員工的編號(hào),姓名,部門名稱,其領(lǐng)導(dǎo)姓名,部門人數(shù),平均工資、最高及最低工資。
確定相關(guān)表:
emp:員工的編號(hào),姓名;
dept:部門名稱;
emp:領(lǐng)導(dǎo)信息;
emp:統(tǒng)計(jì)部門數(shù)據(jù)
相關(guān)字段:
雇員和部門:e.deptno=d.deptno
雇員和領(lǐng)導(dǎo):emp.mgr = memp.empno
①列出"SMITH"或''ALLEN''

select sal
from emp
where ename in ('SMITH','ALLEN');

②以上查詢返回的是多行單列數(shù)據(jù),應(yīng)該在where字句中使用它。列出薪金比“SMITH”或“ALLEN”多的所有員工

select e.empno,e.ename,e.sal
from emp e
where e.sal>any(
          select sal
          from emp
          where ename in('SMITH','ALLEN'))
          and ename not in('SMITH','ALLEN'); 

③找到領(lǐng)導(dǎo)信息

select e.empno,e.ename,e.sal,m.ename
from emp e,emp m
where e.sal>any(
          select sal
          from emp
          where ename in('SMITH','ALLEN'))
          and ename not in('SMITH','ALLEN')
          and e.mgr=m.empno; 

④部門人數(shù),平均工資、最高及最低工資。

select e.empno,e.ename,e.sal,m.ename,temp.count,
temp.avg,temp.max,temp.min,d.dname
from emp e,emp m,(
    select deptno dno,count(empno)count,
    avg(sal) avg,max(sal) max,min (sal) min
    from emp
    group by deptno) temp,dept d
    where e.sal>any( 
            select sal
            from emp
            where 
            ename in('SMITH','ALLEN'))
            and e.ename not in('SMITH','ALLEN')
            and e.mgr=m.empno(+)
            and temp.dno=d.deptno
            and e.deptno=d.deptno;
avg.png

4.列出受雇日期早于其直接上級(jí)的所有員工的編號(hào)、姓名、部門名稱、部門位置、部門人數(shù)。
確定要使用的數(shù)據(jù)表:
emp:員工的編號(hào)、姓名
dept:部門名稱、部門位置
emp:部門人數(shù)
emp:找到領(lǐng)導(dǎo)雇用日期,作為自身關(guān)聯(lián)使用
確定已知的關(guān)聯(lián)字段:
雇員和領(lǐng)導(dǎo):emp.mgr = memp.empno
雇員和部門:emp.deptno = dept.deptno
①列出受雇日期早于其直接上級(jí)的所有員工的編號(hào)、姓名

select e.empno,e.ename
from emp e,emp m
where e.mgr = m.empno(+) and e.hiredate 
< m.hiredate;

②部門名稱、部門位置

select e.empno,e.ename,d.dname,d.loc
from emp e,emp m,dept d
where e.mgr = m.empno(+)
      and e.hiredate < m.hiredate
      and e.deptno = d.deptno;

③部門人數(shù)

select e.empno,e.ename,d.dname,d.loc,temp.count
from emp e,emp m,dept d,(
    select deptno dno,count(empno) count
    from emp
    group by deptno)temp
    where e.mgr = m.empno(+)
      and e.hiredate < m.hiredate
      and e.deptno = d.deptno
      and d.deptno = temp.dno;
圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 主流關(guān)系型數(shù)據(jù)庫(kù) 關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的特點(diǎn) 結(jié)構(gòu)化查詢語(yǔ)言: 數(shù)據(jù)類型: select * from emp; ...
    陳先森mansplain閱讀 849評(píng)論 0 0
  • 筆記: 一、聚合函數(shù):計(jì)數(shù) 最大值 最小值 平均數(shù) 求和 1.計(jì)數(shù) COUNT() 忽略NULL值 方式1:COU...
    鳳之鳩閱讀 5,690評(píng)論 0 1
  • 1. select * from emp; 2. select empno, ename, job from em...
    海納百川_4d26閱讀 2,001評(píng)論 0 4
  • 綿綿春風(fēng)又化雨 添江湖幾筆 山茶開(kāi)時(shí)初遇你 洛陽(yáng)繡花衣 黑夜里你掩面而泣 我撫笛為你奏一曲 聽(tīng)聞他年少時(shí)離去 落花...
    曉曉博士閱讀 1,567評(píng)論 0 0
  • 《拼的是現(xiàn)在,比的是將來(lái)》 拖延癥,這也是人性的弱點(diǎn)。即便你是一位職業(yè)經(jīng)理人,即便你訓(xùn)練有素,你的心中或許都有放縱...
    琳小喵閱讀 262評(píng)論 0 0

友情鏈接更多精彩內(nèi)容