• 请不要在回答技术问题时复制粘贴 AI 生成的内容
javaa
V2EX  ›  程序员

一道SQL面试题,到底能难倒了多少人?

  •  
  •   javaa · Jun 25, 2013 · 13848 views
    This topic created in 4879 days ago, the information mentioned may be changed or developed.
    现有employee 表,表中有 员工编号(id) 员工年龄(age) 员工工资(salary) 员工部门(deptid), 按要求用一条SQL语句完成

    create table employee(
    id int identity(1,1) primary key ,
    name varchar(50),
    salary bigint,
    deptid int);

    1.查出每个部门高于部门平均工资的员工名单

    2、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序。


    3.求每个部门工资不小于6000的人员的平均值;

    4、各部门在各年龄段的平均工资

    看有多少人能答出来。

    参考答案 http://www.jfox.info/yuan-gong-bu-men-gong-zi-sql-mian-shi-ti
    19 replies  •  1970-01-01 08:00:00 +08:00
    Alexisused
    Alexisused
    Jun 25, 2013
    1
    ...这不是课本上基础题么
    pythonee
    pythonee
    Jun 25, 2013
    2
    出来工作,这些东西不用就忘了,我都写不出来
    lichao
    lichao
    Jun 25, 2013
    3
    请尽快修正你的参考答案
    Marlon
    Marlon
    Jun 25, 2013
    4
    楼上是高手啊,难住我了,,,
    thinkif
    thinkif
    Jun 25, 2013
    5
    是每一个小题目一个SQL 还是4个题目必须在一条SQL出来?
    slixurd
    slixurd
    Jun 25, 2013
    6
    考试题无误= =昨天还在题库里面看到类似的题目...
    akira
    akira
    Jun 25, 2013
    7
    “按要求(各)用一条SQL语句完成”,
    我想了半天,也想不到用一条sql语句完成4个要求该怎么写。。。
    cxshun
    cxshun
    Jun 25, 2013
    8
    话说考这些真的有意义吗?找一个刚毕业的,估计做的很不错,但真的是你需要的吗?
    dreampuf
    dreampuf
    Jun 25, 2013
    9
    @akira 四道题,四个子查询啊

    第三题参考答案错了, 不小于 != `>`
    第四题答案太蠢,这么回答的人也不会用他

    SELECT m, COUNT(m) FROM (SELECT ((id-id%5)/5)*5 as m FROM users) as nm GROUP BY m;
    javaa
    javaa
    OP
    Jun 25, 2013
    10
    各位,这是参考题目
    michaelbibby
    michaelbibby
    Jun 27, 2013
    11
    * 这个题目的目的和意义是什么?
    * 你认为一条 SQL 语句搞定问题就是最好的?更容易理解?可维护性更高?
    explon
    explon
    Jun 27, 2013 via iPhone
    12
    用一条语句的性能问题你考虑过吗?
    zieglar
    zieglar
    Jun 27, 2013
    13
    楼主就是来诱引你们去看那网站的,软广告,block~
    Ricepig
    Ricepig
    Jun 27, 2013
    14
    各种子查询各种join

    性能堪忧啊lz
    vibbow
    vibbow
    Jun 28, 2013
    15
    用一条sql完成,纯属炫技。

    为可维护性和性能优化去写sql,才是正常的做法。
    Alexisused
    Alexisused
    Jun 28, 2013
    16
    // 1.列出至少有一个员工的所有部门。
    select dname from dept where deptno in(select deptno from emp e group by deptno having count(e.empno)>=1)
    // 2.列出薪金比“SMITH”多的所有员工。
    select * from emp where sal>(select sal from emp where ename='SMITH')
    // 3.列出所有员工的姓名及其直接上级的姓名。
    select e.ename, m.ename from emp e left join (select ename,empno from emp) m on e.mgr = m.empno
    select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from emp a
    // 4.列出受雇日期早于其直接上级的所有员工。
    select e.ename from emp e, emp m where e.mgr = m.empno and e.hiredate<m.hiredate
    // 5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
    select d.dname, e.* from emp e left join dept d on e.deptno=d.deptno
    // 6.列出所有“CLERK”(办事员)的姓名及其部门名称。
    select e.ename, d.dname from emp e left join dept d on e.deptno=d.deptno where e.job='CLERK'
    // 7.列出最低薪金大于1500的各种工作。
    select distinct e.job from emp e group by job having min(e.sal)>1500
    // 8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
    select e.ename from emp e, dept d where d.dname='SALES' and e.deptno=d.deptno
    // 9.列出薪金高于公司平均薪金的所有员工。
    select ename from emp where sal>(select avg(sal) from emp);
    // 10.列出与“SCOTT”从事相同工作的所有员工。
    select * from emp e where e.job=(select job from emp where ename='SCOTT')
    // 11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
    select ename, sal from emp where sal in (select sal from emp where deptno=30) and deptno<>30
    // 12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
    select ename, sal from emp where sal > (select max(sal) from emp where deptno=30)
    // 13.列出在每个部门工作的员工数量、平均工资。
    select dname, count(empno), avg(sal) from emp e left join dept d on e.deptno = d.deptno group by dname
    // 14.列出所有员工的姓名、部门名称和工资。
    select ename, dname, sal from emp e left join dept d on e.deptno=d.deptno
    // 15.列出所有部门的详细信息和部门人数。
    select d.*, enum from dept d left join (select deptno, count(empno) enum from emp group by deptno) e on e.deptno=d.deptno
    // 16.列出各种工作的最低工资。
    select dname, minsal from dept d left join (select deptno, min(sal) minsal from emp group by deptno) e on e.deptno=d.deptno
    // 17.列出各个部门的MANAGER(经理)的最低薪金。
    select e.deptno, min(sal) minsal from emp e where e.job='MANAGER' group by e.deptno
    // 18.列出所有员工的年工资,按年薪从低到高排序。
    select e.ename, nvl(sal, 0)*12 ysal from emp e order by ysal asc
    lookhi
    lookhi
    Jun 28, 2013
    17
    你们都错了。楼主想说的是这个
    salary bigint,
    什么样的工资要bigint啊。。。。
    vibbow
    vibbow
    Jun 28, 2013
    18
    @lookhi 万一人家发的是印尼盾呢~~~
    yanyanlong
    yanyanlong
    Jun 28, 2013
    19
    题目不算难。 答不出来说明基础不过关。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5433 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 01:59 · PVG 09:59 · LAX 17:59 · JFK 20:59
    ♥ Do have faith in what you're doing.