精华内容
下载资源
问答
  • SQL查询--列出至少有一个员工部门

    万次阅读 2017-04-25 15:45:17
    问题:列出至少有一个员工部门 答案: 解法一: select dname from dept where deptno in(select deptno from emp); 解法二: select dname from dept where deptno in (select deptno from emp gro

    请先查看解决问题所需的数据表结构:点击跳转


    问题:列出至少有一个员工的部门


    答案:

    解法一:

    select dname from dept where deptno in(select deptno from emp);


    解法二:

    select dname from dept where deptno in (select deptno from emp group by deptno having count(deptno)>=1);


    解法三:

    select dname from dept A where exists(select null from emp  B where B.deptno=A.deptno);

    展开全文
  • 列出至少有一个员工所有部门。---------SQL> select dname from dept where deptno in(select deptno from emp);SQL> select dname from dept where deptno in(select deptno from e...
    oracle 一些经典sql(转自网络整理)
    第一篇
    --------1.列出至少有一个员工的所有部门。---------  
    SQL> select dname from dept where deptno in(select deptno from emp); 
    SQL> select dname from dept where deptno in(select deptno from emp group by deptno having count(deptno) >=1);  
    --------2.列出薪金比“SMITH”多的所有员工。----------  
    SQL> select * from emp where sal > (select sal from emp where ename = 'SMITH');  
    --------3.列出所有员工的姓名及其直接上级的姓名。----------  
    SQL> select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from emp a;   
    --------4.列出受雇日期早于其直接上级的所有员工。----------  
    SQL> select a.ename from emp a where a.hiredate<(select hiredate from emp b where b.empno=a.mgr);   
    --------5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门----------  
    SQL> select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.deptno  
         from dept a left join emp b on a.deptno=b.deptno;  
    --------6.列出所有“CLERK”(办事员)的姓名及其部门名称。----------  
    SQL> select a.ename,b.dname from emp a join dept b on a.deptno=b.deptno and a.job='CLERK';  
    --------7.列出最低薪金大于1500的各种工作。----------  
    SQL> select distinct job as HighSalJob from emp group by job having min(sal)>1500;   
    --------8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。----------  
    SQL> select ename from emp where deptno=(select deptno from dept where dname='SALES');   
    --------9.列出薪金高于公司平均薪金的所有员工。----------  
    SQL> select ename from emp where sal>(select avg(sal) from emp);   
    --------10.列出与“SCOTT”从事相同工作的所有员工。--------  
    SQL> select ename from emp where job=(select job from emp where ename='SCOTT');  

    --------11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。---------  
    SQL> select a.ename,a.sal from emp a where a.sal in (select b.sal  
         from emp b where b.deptno=30) and a.deptno$amp;<amp;$gt;30;   <br="">--------12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。---------  
    SQL> select ename,sal from emp where sal>(select max(sal) from emp where deptno=30);   

    --------13.列出在每个部门工作的员工数量、平均工资和平均服务期限。---------  
    SQL> select (select b.dname from dept b where a.deptno=b.deptno) as deptname ,count(deptno) as deptcount,avg(sal) as deptavgsal  
        from emp a group by deptno;     
    --------14.列出所有员工的姓名、部门名称和工资。---------  
    SQL> select a.ename,(select b.dname from dept b where b.deptno=a.deptno) as deptname,sal from emp a; 
    --------15.列出所有部门的详细信息和部门人数。---------  
    SQL> select a.deptno,a.dname,a.loc,(select count(deptno) from emp b where b.deptno=a.deptno group by b.deptno) as deptcount from dept a;   
      --------16.列出各种工作的最低工资。---------  
    SQL> select job,avg(sal) from emp group by job;  
    --------17.列出各个部门的MANAGER(经理)的最低薪金。--------  
    SQL> select deptno,min(sal) from emp where job='MANAGER' group by deptno; 
    --------18.列出所有员工的年工资,按年薪从低到高排序。---------  
    SQL> select ename,(sal+nvl(comm,0))*12 as salpersal from emp order by salpersal;  

    第二篇
    --------1. 找出EMP表中的姓名(ENAME)第三个字母是A 的员工姓名。---------  
    SQL> SELECT ENAME FROM SCOTT.EMP WHERE ENAME LIKE '__A%';  
    -------2. 找出EMP表员工名字中含有A 和N的员工姓名。----------  
    SQL> SELECT ENAME FROM SCOTT.EMP WHERE ENAME LIKE '%A%' AND ENAME LIKE '%N%';
    --------3. 找出所有有佣金的员工,列出姓名、工资、佣金,显示结果按工资从小到大,佣金从大到小。----------
    SQL> SELECT ENAME,SAL + COMM AS WAGE,COMM  
        FROM SCOTT.EMP  
        ORDER BY WAGE,COMM DESC;  
    -------4. 列出部门编号为20的所有职位。----------  
    SQL> SELECT DISTINCT JOB FROM EMP WHERE DEPTNO = 20;  
    -------5. 列出不属于SALES 的部门。----------  
    SQL> SELECT DISTINCT * FROM SCOTT.DEPT WHERE DNAME $amp;<amp;$gt; 'sales'; ="" <br="">或者
    SQL> SELECT DISTINCT * FROM SCOTT.DEPT WHERE DNAME != 'SALES';  
    SQL> SELECT DISTINCT * FROM SCOTT.DEPT WHERE DNAME NOT IN('SALES');  
    SQL> SELECT DISTINCT * FROM SCOTT.DEPT WHERE DNAME NOT LIKE 'SALES'; 
    ---6. 显示工资不在1000 到1500 之间的员工信息:名字、工资,按工资从大到小排序。---------  
    SQL> SELECT ENAME,SAL + COMM AS WAGE FROM SCOTT.EMP  
        WHERE SAL + COMM NOT BETWEEN 1000 AND 1500  
        ORDER BY WAGE DESC;  
    --或者  
    SQL> SELECT ENAME,SAL + COMM AS WAGE FROM SCOTT.EMP  
      2  WHERE SAL + COMM < 1000 OR SAL + COMM > 1500  
      3  ORDER BY WAGE DESC;  
      
      /*----- 7. 显示职位为MANAGER 和SALESMAN,年薪在15000 和20000 之间的员工的信息:名字、职位、年薪。----------*/  
    SQL> SELECT ENAME 姓名,JOB 职位,(SAL + COMM) * 12 AS 年薪  
      2  FROM SCOTT.EMP  
      3  WHERE (SAL + COMM) * 12 BETWEEN 15000 AND 20000  
      4  AND JOB IN('MANAGER','SALESMAN'); 
      
      /*----- 8. 说明以下两条SQL语句的输出结果:  
        SELECT EMPNO,COMM FROM EMP WHERE COMM IS NULL;  
        SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL;  
    --说明:IS NULL是判断某个字段是否为空,为空并不等价于为空字符串或为数字0;  
    --而 =NULL 是判断某个值是否等于 NULL,NULL = NULL和NULL $amp;<amp;$gt; null都为="" false。<br="">
    第三篇

    /*--------1、改变NLS_LANG 的值,让SELECT TO_CHAR(SALARY,'L99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5 输出结果的货币单位是¥和$。---------*/  
    -----在没有设置NLS_LANG的情况下:  

    SQL> SELECT TO_CHAR(SALARY,'L99,999.99')  
         FROM HR.EMPLOYEES  
         WHERE ROWNUM < 5;  
       
       /*--------2、列出前五位每个员工的名字,工资、涨薪后的的工资(涨幅为8%),以“元”为单位进行四舍五入。---------*/  

    SQL> SELECT FIRST_NAME,SALARY,ROUND(SALARY * 1.08) FROM HR.EMPLOYEES  
         WHERE ROWNUM <=5;  
         
    /*--------3、找出谁是最高领导,将名字按大写形式显示。---------*/  
    SQL> SELECT UPPER(FIRST_NAME || ' ' || LAST_NAME) AS NAME 
         FROM HR.EMPLOYEES  
         WHERE MANAGER_ID IS NULL;  
    /*--------4、找出David 的直接领导的名字。---------*/  
    SQL> SELECT UPPER(FIRST_NAME ||' ' || LAST_NAME) AS NAME 
         FROM HR.EMPLOYEES  
         WHERE EMPLOYEE_ID IN(  
         SELECT MANAGER_ID FROM HR.EMPLOYEES  
         WHERE FIRST_NAME = 'David' AND LAST_NAME = 'Austin');        
    /*--------5、First_Name 为Alexander,LAST_NAME为Hunold领导谁。(谁向David 报告)。---------*/  
    SQL> SELECT UPPER(FIRST_NAME ||' ' || LAST_NAME) AS NAME 
         FROM HR.EMPLOYEES  
         WHERE MANAGER_ID IN(  
         SELECT EMPLOYEE_ID FROM HR.EMPLOYEES  
         WHERE FIRST_NAME = 'Alexander' AND LAST_NAME = 'Hunold');  
         
    /*--------6、哪些员工的工资高于他直接上司的工资,列出员工的名字和工资,上司的名字和工资。---------*/  

    SQL> SELECT E.FIRST_NAME,E.SALARY,M.FIRST_NAME,M.SALARY  
        FROM EMPLOYEES E,EMPLOYEES M  
        WHERE E.MANAGER_ID = M.EMPLOYEE_ID AND E.SALARY > M.SALARY;  

    --要是只列出员工的名字与工资的话,还可以这样:  

    SQL> SELECT E.FIRST_NAME,E.SALARY  
       FROM EMPLOYEES E WHERE E.SALARY $amp;>amp;$nbsp; 
      (SELECT M.SALARY FROM EMPLOYEES M   
       WHERE E.MANAGER_ID = M.EMPLOYEE_ID); 
      /*--------7、哪些员工和Chen(LAST_NAME)同部门。---------*/  

    SQL> SELECT FIRST_NAME FROM EMPLOYEES  
      WHERE DEPARTMENT_ID IN 
      (SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE LAST_NAME = 'Chen')  
      AND LAST_NAME $amp;<amp;$gt; 'chen'; ="" <br="">  --或者--  

    SQL> SELECT E1.FIRST_NAME FROM EMPLOYEES E1,EMPLOYEES E2  
        WHERE E1.DEPARTMENT_ID = E2.DEPARTMENT_ID  
        AND E2.LAST_NAME = 'Chen' AND E1.LAST_NAME $amp;<amp;$gt; 'chen'; ="" <br="">  /*--------8、哪些员工跟De Haan(LAST_NAME)做一样职位。---------*/  
    SQL> SELECT FIRST_NAME FROM EMPLOYEES  
        WHERE JOB_ID IN 
        (SELECT JOB_ID FROM EMPLOYEES  
        WHERE LAST_NAME = 'De Haan')  
        AND LAST_NAME $amp;<amp;$gt; 'de="" haan'; ="" <br="">   --或者--  

    SQL> SELECT E1.FIRST_NAME FROM EMPLOYEES E1,EMPLOYEES E2  
        WHERE E1.JOB_ID = E2.JOB_ID   
        AND E2.LAST_NAME = 'De Haan' AND E1.LAST_NAME $amp;<amp;$gt; 'de="" haan'; ="" <br="">  /*--------9、哪些员工跟Hall(LAST_NAME)不在同一个部门。---------*/  

    SQL> SELECT FIRST_NAME || ' ' || LAST_NAME FROM HR.EMPLOYEES  
        WHERE DEPARTMENT_ID NOT IN(  
        SELECT DEPARTMENT_ID FROM HR.EMPLOYEES  
        WHERE LAST_NAME = 'Hall');  
       
       --或者:  

    SQL> SELECT e1.FIRST_NAME FROM EMPLOYEES e1,EMPLOYEES e2  
        WHERE e1.DEPARTMENT_ID = e2.DEPARTMENT_ID(+)  
        and e2.LAST_NAME(+) = 'Hall' 
        and e2.LAST_NAME IS NULL;  
      /*-------10、哪些员工跟William(FIRST_NAME)、Smith(LAST_NAME)做不一样的职位。--------*/  

    SQL> SELECT FIRST_NAME || ' ' || LAST_NAME FROM HR.EMPLOYEES  
        WHERE JOB_ID $amp;<amp;$gt; (select="" distinct="" job_id="" from="" employees ="" <br="">    WHERE FIRST_NAME = 'William' AND LAST_NAME = 'Smith');   
    /*--------11、显示有提成的员工的信息:名字、提成、所在部门名称、所在地区的名称。---------*/  

    SQL> SELECT E.FIRST_NAME || ' ' || E.LAST_NAME AS NAME,  
      E.COMMISSION_PCT,D.DEPARTMENT_NAME,L.CITY  
      FROM HR.EMPLOYEES E,HR.DEPARTMENTS D,HR.LOCATIONS L  
      WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID  
      AND D.LOCATION_ID = L.LOCATION_ID  
      AND E.COMMISSION_PCT IS NOT NULL;  

    /*--------12、显示Executive部门有哪些职位。---------*/  
    SQL> SELECT DISTINCT E.JOB_ID FROM HR.EMPLOYEES E,HR.DEPARTMENTS D  
        WHERE D.DEPARTMENT_ID = E.DEPARTMENT_ID  
        AND D.DEPARTMENT_NAME = 'Executive';  
      /*--------13、整个公司中,最高工资和最低工资相差多少。---------*/  
    SQL> SELECT MAX(SALARY) - MIN(SALARY) FROM HR.EMPLOYEES;  
    /*--------14、提成大于0 的人数。---------*/  
    SQL> SELECT COUNT(*) AS 提成大小0的人数 FROM HR.EMPLOYEES  
        WHERE COMMISSION_PCT > 0;  
      --或者  

    SQL> SELECT COUNT(COMMISSION_PCT) AS 提成大小0的人数    
         FROM HR.EMPLOYEES  
         WHERE COMMISSION_PCT > 0;  
      /*--------15、显示整个公司的最高工资、最低工资、工资总和、平均工资保留到整数位。---------*/  

    SQL> SELECT MAX(NVL(SALARY,0)) AS 最高工资,  
                 MIN(NVL(SALARY,0)) AS 最低工资,  
                 SUM(NVL(SALARY,0)) AS 工资总和,  
                 ROUND(AVG(NVL(SALARY,0))) AS 平均工资  
        FROM HR.EMPLOYEES;  
      /*--------16、整个公司有多少个领导。---------*/  
    SQL> SELECT COUNT(DISTINCT(MANAGER_ID))  FROM HR.EMPLOYEES  
       2  WHERE MANAGER_ID IS NOT NULL;  
       /*--------17、列出在同一部门入职日期晚但工资高于其他同事的员工:  
    名字、工资、入职日期。---------*/  

    SQL> SELECT DISTINCT E1.FIRST_NAME || ' ' || E1.LAST_NAME AS 姓名,  
              E1.SALARY AS 工资,E1.HIRE_DATE AS 入职日期  
       FROM HR.EMPLOYEES E1,HR.EMPLOYEES E2  
       WHERE E1.DEPARTMENT_ID = E2.DEPARTMENT_ID  
       AND E1.HIRE_DATE > E2.HIRE_DATE  
       AND E1.SALARY > E2.SALARY  
       ORDER BY 工资 DESC;  
    第四篇
    /*--------1、各个部门平均、最大、最小工资、人数,按照部门号升序排列。---------*/  
    SQL> SELECT DEPARTMENT_ID AS 部门号,AVG(SALARY) AS 平均工资  
               ,MAX(SALARY) AS 最高工资,MIN(SALARY)  AS 最低工资  
               ,COUNT(*) AS 人数  
        FROM EMPLOYEES  
        GROUP BY DEPARTMENT_ID  
        ORDER BY DEPARTMENT_ID ASC;  
      /*--------2、各个部门中工资大于5000的员工人数。---------*/  
    SQL> SELECT DEPARTMENT_ID,COUNT(*) FROM EMPLOYEES  
         WHERE SALARY > 5000  
         GROUP BY DEPARTMENT_ID;  
       /*--------3、各个部门平均工资和人数,按照部门名字升序排列。---------*/  

    SQL> SELECT DPTNAME,AVG(SALARY),COUNT(*) FROM 
              (SELECT 
                  (SELECT DEPT.DEPARTMENT_NAME FROM DEPARTMENTS DEPT  
                  WHERE DEPT.DEPARTMENT_ID = EMP.DEPARTMENT_ID) DPTNAME,  
                  EMP.SALARY  
       FROM EMPLOYEES EMP)  
       GROUP BY DPTNAME  
       ORDER BY DPTNAME;  
      --或者--  

    SQL> 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;  
       /*--------4、列出每个部门中有同样工资的员工的统计信息,  
      列出他们的部门号,工资,人数。---------*/  

    SQL> SELECT EMP1.DEPARTMENT_ID,EMP1.SALARY,COUNT(*) CNT  
        FROM   EMPLOYEES EMP1,EMPLOYEES EMP2  
        WHERE  EMP1.DEPARTMENT_ID = EMP2.DEPARTMENT_ID AND 
                EMP1.SALARY = EMP2.SALARY  
                AND EMP1.EMPLOYEE_ID $amp;<amp;$gt; emp2.employee_id ="" <br="">    GROUP BY EMP1.DEPARTMENT_ID,EMP1.SALARY;  
       /*--------5、列出同部门中工资高于1000 的员工数量超过2 人的部门,  
    显示部门名字、地区名称。---------*/  

    SQL> 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、哪些员工的工资,高于整个公司的平均工资,  
      列出员工的名字和工资(降序)。---------*/  

    SQL> SELECT FIRST_NAME || ' ' || LAST_NAME,SALARY  
       FROM EMPLOYEES  
       WHERE SALARY > (  
             SELECT AVG(SALARY)  
             FROM EMPLOYEES  
             )  
       ORDER BY SALARY DESC;   
       
       /*--------7、哪些员工的工资,介于50号 和80号 部门平均工资之间。---------*/  

    SQL> 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 的员工名字。---------*/  

    SQL> 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、列出各个部门中工资最高的员工的信息:名字、部门号、工资。---------*/  

    SQL> SELECT FIRST_NAME || ' ' || LAST_NAME AS NAME 
              ,SALARY,DEPARTMENT_ID  
       FROM EMPLOYEES  
       WHERE (DEPARTMENT_ID,SALARY) IN 
             (SELECT DEPARTMENT_ID,MAX(SALARY)  
              FROM EMPLOYEES  
              GROUP BY DEPARTMENT_ID);   
       
       /*--------10、最高的部门平均工资是多少。---------*/  
    SQL> SELECT MAX(AVGSALARY)  
       FROM(SELECT DEPARTMENT_ID,AVG(SALARY) AVGSALARY  
         FROM EMPLOYEES  
         GROUP BY DEPARTMENT_ID);     
     

    转载于:https://www.cnblogs.com/fxer/p/6807594.html

    展开全文
  • 问题:列出薪资比“SMITH”多的所有员工 答案: 解法: select * from emp where sal>(select sal from emp where ename='SMITH'); 解法二: select * from emp A where exists(select null from emp

    请先查看解决问题所需的数据表结构:点击跳转


    问题:列出薪资比“SMITH”多的所有员工


    答案:

    解法一:

    select * from emp where sal>(select sal from emp where ename='SMITH');


    解法二:

    select * from emp A where exists(select null from emp B where B.sal<A.sal and b.ename='SMITH');


    解法三:

    select * from emp A,(select sal as salary from emp where ename='SMITH') B where A.sal>B.salary;


    展开全文
  • emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号) dept 部门表(deptno 部门... 1、列出至少有一个员工所有部门。  2、列出薪金比“SM...


    emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号)

    dept 部门表(deptno 部门编号/dname 部门名称/loc 地点)

    工资 = 薪金 + 佣金


    题目:

      1、列出至少有一个员工的所有部门。

      2、列出薪金比“SMITH”多的所有员工。(大于最大薪水SMITH员工)

      3、列出所有员工的姓名及其直接上级的姓名。

      4、列出受雇日期早于其直接上级的所有员工。

      5、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。

      6、列出所有job为“CLERK”(办事员)的姓名及其部门名称。

      7、列出最低薪金大于1500的各种工作。

      8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

      9、列出薪金高于公司平均薪金的所有员工。

      10、列出与“SCOTT”从事相同工作的所有员工。

      11、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

      12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

      13、列出在每个部门工作的员工数量、平均工资和平均服务期限。

      14、列出所有员工的姓名、部门名称和工资。

      15、列出从事同一种工作但属于不同部门的员工的一种组合。

      16、列出所有部门的详细信息和部门人数。

      17、列出各种工作的最低工资。

      18、列出各个部门的MANAGER(经理)的最低薪金(job为MANAGER)。

      19、列出所有员工的年工资,按年薪从低到高排序。



    解答:

    第一步:建表:

    create table dept(
           deptno number(10) primary key,
           dname varchar2(30),
           loc varchar2(30)
    )
    commit;
    drop table emp;
    drop table dept;
    create table emp(
           empno number(10) primary key,
           ename varchar2(30),
           job varchar2(30),
           mgr varchar2(30),
           hiredate number(10),
           sal number(10),
           comm number(10),
           deptno number(10),
           foreign key(deptno) references dept(deptno)
    )

    第二步:向各表中插入数据:

    insert into dept values(1, '技术部' ,'南泥湾');
    insert into dept values(2, 'SALES' ,'深圳市');
    insert into dept values(3, '事业部' ,'北京市');
    insert into dept values(4, '服务部' ,'延安');
    insert into dept values(5, '生产部' ,'南京市');
    insert into dept values(6, '宣传部' ,'上海市');
    insert into dept values(7, '打杂部' ,'广州市');
    insert into dept values(8, '司令部' ,'重庆市');
    insert into dept values(9, '卫生部' ,'长沙市');
    insert into dept values(10, '文化部' ,'武冈市');
    insert into dept values(11, '娱乐部' ,'纽约');
    insert into dept values(12, '管理部' ,'伦敦');
    insert into dept values(13, '行政部' ,'天津市');
    select * from dept


    insert into emp values(1, '关羽羽', 'CLERK' ,'刘备备', 20011109, 2000, 1000, 3);
    insert into emp values(2, 'SMITH', 'CLERK' ,'刘备备', 20120101, 2000, 800, 6);
    insert into emp values(3, '刘备备', 'MANAGER' ,'宋祖英', 20080808, 9000, 4000, 3);
    insert into emp values(4, 'TOM', 'ENGINEER' ,'Steve', 20050612, 3000, 1000, 1);
    insert into emp values(5, 'Steve', 'MANAGER' ,'宋祖英', 20110323, 80000, 9000, 1);
    insert into emp values(6, '张飞飞', 'CLERK' ,'刘备备', 20101010, 2000, 1000, 3);
    insert into emp values(7, 'SCOTT', 'CLERK' ,'刘备备', 20071204, 2000, 1000, 3);
    insert into emp values(8, '宋祖英', 'Boss' ,'无', 20060603, 2000, 1000, 8);
    insert into emp values(9, '曹仁人', 'SALESMAN' ,'曹操操', 20120130, 2000, 1000, 2);
    insert into emp values(10, '曹操操', 'MANAGER' ,'宋祖英',20090815, 2000, 1000, 2);

    insert into emp values(11, '酱油哥', 'HAPI' ,'XXX',20090215, 3, 1, 2);



    第三步:操作

    1、列出至少有一个员工的所有部门。
    select deptno,dname,loc from dept
    where deptno in (select deptno from emp);


    2、列出薪金比“SMITH”多的所有员工。(大于最大薪水SMITH员工)
    select empno,ename,sal from emp
    where emp.sal>(select sal from emp emp1 where emp1.ename = 'SMITH')


    3、列出所有员工的姓名及其直接上级的姓名。
    select a.ename,b.ename from emp a,emp b
    where a.mgr=b.ename;

    4、列出受雇日期早于其直接上级的所有员工。
    select a.empno, a.ename from emp a, emp b
    where a.mgr=b.ename and a.hiredate<b.hiredate;


    5、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。
    select dept.dname,emp.* from dept left join emp on dept.deptno = emp.deptno;


    6、列出所有job为“CLERK”(办事员)的姓名及其部门名称。
    select emp.ename,emp.job,dept.dname from emp,dept
    where emp.job = 'CLERK' and emp.deptno = dept.deptno;


    7、列出最低薪金大于1500的各种工作。
    select job from emp
    group by job
    having min(sal)>1500;


    8、列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
    select emp.ename from emp 
    where emp.deptno = 
          (select deptno from dept 
           where dept.dname = 'SALES');

    9、列出薪金高于公司平均薪金的所有员工。
    select * from emp
    where emp.sal > (select avg(sal) from emp)


    10、列出与“SCOTT”从事相同工作的所有员工。
    select * from emp
    where emp.job = 
    (select job from emp e 
     where e.ename = 'SCOTT');
     
    11、列出薪金等于部门3中员工的薪金的所有员工的姓名和薪金。
    select ename,sal from emp
    where sal in (select sal from emp where deptno=3);


    12、列出薪金高于在部门3工作的所有员工的薪金的员工姓名和薪金。
    select ename,sal from emp
    where sal > (select max(sal) from emp where deptno=3);


    13、列出在每个部门工作的员工数量、平均工资和平均服务期限。
    --********由于平均服务期限无法考证求出,故只列出在每个部门工作的员工数量、平均工资。********--
    select deptno,count(empno),avg(sal) from emp group by deptno

    14、列出所有员工的姓名、部门名称和工资。
    select emp.ename as 姓名, dept.dname as 部门, emp.sal+emp.comm as 工资 from emp,dept
    where dept.deptno = emp.deptno;

    15、列出从事同一种工作但属于不同部门的员工的一种组合。
    select a.ename, b.ename, a.job, b.job, a.deptno, b.deptno from emp a,emp b
    where a.job=b.job and a.deptno$amp;

    16、列出所有部门的详细信息和部门人数。
    select dept.*,(select count(*) from emp where dept.deptno = emp.deptno) as pop from dept;

    17、列出各种工作的最低工资。
    select job,min((nvl(comm,0)+sal)) from emp group by job

    18、列出各个部门的MANAGER(经理)的最低薪金(job为MANAGER)。
    select emp.deptno, min(sal) from emp,dept 
    where job = 'MANAGER'
    group by emp.deptno


    19、列出所有员工的年工资,按年薪从低到高排序。
    select ename,(nvl(comm,0)+sal)*12 年薪 from emp

    转载于:https://www.cnblogs.com/jpfss/p/9485432.html

    展开全文
  • oracle部门员工表查询

    千次阅读 2014-04-08 23:00:55
    使用scott/tiger用户下的emp表和dept表完成下列练习,表的结构说明如下 emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号...列出至少有一个员工所有部门
  • 查询部门有2个人或以上员工部门号 id payno 1 lisi 1 zhangsan 2 wangmeng 3 zhaoliu 3 wuxia 3 mengfang 4 guodaxia 5 guofurong 结果如下: id 1 3 解决: 方法: SELECT DI...
  • mysql三表联合查询(员工表,部门表,工资表)

    万次阅读 多人点赞 2019-01-07 17:07:52
    部门 员工 工资三表联查有关问题 ,...列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。 列出部门名称和这些部门员工信息,同时列出那些没有员工部门列出所有文员的姓名及其部门名称,部门的人数。
  • --检索部门编号、部门名称、部门所在地及其每个部门员工总数 select d.deptno,d.dname,d.loc,count(*) from emp e, dept d where e.deptno=d.deptno group by d.deptno,d.dname,d.loc; ...
  • 实现方法: select last_name,first...INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN:只要..
  • on欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants...
  • emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号) ...列出至少有一个员工所有部门。 select *from dept where deptno in(select di
  • emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号) dept部门表(deptno部门编号/dname部门名称/loc地点) 注意:工资 = 薪金 + 佣金 2、创建表 create ...
  • 员工部门表综合查询60题

    千次阅读 2017-09-06 22:57:44
    (23.1) 查询至少有一个员工部门信息。 select d.dname,count(empno) 部门人数 from emp e right join dept d on d.deptno=e.deptno group by d.dname,e.deptno having count(empno)>=1 (23.2) 查询至少有两个...
  • (四)MySQL员工部门查询

    千次阅读 2019-09-23 01:40:51
    建表脚本 ... deptno INT PRIMARY KEY AUTO_INCREMENT COMMENT '部门编号', -- 部门编号 dname VARCHAR(20) COMMENT '部门名字', -- 部门名字 loc VARCHAR(20) COMMENT '地址' -- 地址 ); -- 员...
  • 02DEPARTMENT_ID(primary key),03DEPARTMENT_NAME,04LOCATION05 06EMPLOYEES:07EMPLOYEE_ID(primary key),08EMPLOYEE_NAME,09EMPLOYEE_JOB,10MANAGER,11SALARY,12DEPARTMENT_ID列出EMPLOYEES表中各部门部门号,...
  • -- 部门表 create table dept( deptno int primary key auto_increment, -- 部门编号 dname varchar(14) , -- 部门名字 loc varchar(13) -- 地址 ) ; -- 员工表 create table emp( empno int primary key auto_...
  • oracle部门员工表关系查询

    千次阅读 2012-03-24 19:09:04
    查询各个部门员工个数 department:deptno dname employee: deptno empno personnel select e.deptno,count(e.empno) from (select * from emp em group by em.empno)e ————这是自己想出来的,是错误的
  • 把该员工表作为一个自关联表。 -- 部门表 create table dept( deptno int primary key auto_increment, -- 部门编号 dname varchar(14) , -- 部门名字 loc varchar(13) -- 地址 ) ; -- 员工表 create table ...
  • 部门表(部门编号。等等)

    千次阅读 2013-09-24 15:45:06
    表结构约定: emp雇员表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)   dept部门表(deptno部门编号/dname部门...1、列出至少有一个员工所有部门。(两个
  • 员工部门表综合查询60题(带答案)

    千次阅读 2018-11-22 15:59:22
    员工部门表综合查询60题(上) CREATE DATABASE oa; USE oa; CREATE TABLE dept( deptno INT PRIMARY KEY, dname VARCHAR(20), loc VARCHAR(20) ) DROP TABLE emp CREATE TABLE emp( empno INT PRIMARY KEY, ename...
  • mysql--部门员工表练习题

    千次阅读 2019-06-12 17:41:52
    部门表 create table dept( deptno int primary key auto_increment, -- 部门编号 dname varchar(14) , -- 部门名字 loc varchar(13) -- 地址 ) ; insert into dept values(10,'财务部','北京'); insert into ...
  • 关于员工部门查询的SQL笔试题

    千次阅读 2013-09-02 12:25:48
    根据部门号由高而低,工资低而高列出个员工的姓名,部门号,工资 select DEPARTMENT_ID as 部门号,EMPLOYEE_NAME as 姓名,SALARY as 工资 from EMPLOYEES order by DEPARTMENT_ID desc,SALARY asc 列出'张三'...
  • sql语句练习1

    千次阅读 2014-07-20 12:17:16
    1 列出至少有一个员工所有部门
  • 高层想法建立一个数据部门支持企业的精细化运营,我想了解下一个数据部门如何从0-1建立呢?并且“建立成功”的指标是什么。 目录 一 背景说明 二从0-1搭建一个数据分析部门步骤和框架 1)第一步:定位和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,710
精华内容 5,884
关键字:

列出至少有一个员工的所有部门