数据库面试题(二)

1、构造SQL语句,列出在1981年入职的职员的姓名、入职时间和月收入(薪水和奖金之和)别名为salary,并将入职时间显示为::“1981-10-10”这种形式,月收入显示为”$12,345.67”这种形式。

SELECT ename,

  to_char(hiredate,   'yyyy-mm-dd') hiredate,

  to_char(sal + nvl(comm,   0),  '$99,999.00') salary

FROM emp

WHEREto_char(hiredate,   'yyyy') = '1981';


2、列出职员表中员工的姓名、薪水和薪水等级,并按薪水由高到低排序。等级数据来自于表salgrade。

SELECT e.ename,  e.sal, s.grade

FROM emp e JOINsalgrade s ON e.sal BETWEEN s.losal

AND s.hisal

ORDER BY sal DESC;


3、列出职员表中的员工姓名和他们所在的部门名称及所在城市,按部门编码升序排列。暂未分配部门的员工及没有员工的部门不予考虑。

SELECT e.ename, d.dname,d.loc

FROM emp e JOIN deptd ON e.deptno = d.deptno

ORDER BY e.deptno;


4、列出每个员工的名字(别名为EMPLOYEE)及他们的直接领导的名字(别名为MANAGER),如果某些员工没有领导,则在其领导的位置上显示“boss”。

SELECT e.ename EMPLOYEE, nvl(m.ename,   'boss') MANAGER

FROM emp e LEFT

OUTER JOIN emp m ONe.mgr = m.empno;


5、查询员工分布在哪些不同的部门,列出这些部门的部门编码。去掉重复值显示。

SELECT DISTINCTdeptno

FROM emp;


6、查询每个部门每个职位的员工人数,如下形式:

SELECT deptno, job, COUNT(*)

FROM emp

GROUP BY deptno, job;


7、查询哪些职位的薪水总和大于5000元,列出这些职位和其薪水总和,并按薪水总和升序排列。

SELECT job, SUM(sal)

FROM emp

GROUP BY job HAVINGSUM(sal) > 5000

ORDER BY SUM(sal);


8、查询哪个部门的平均薪水比部门20的平均薪水低,列出这些部门的编码和平均薪水值。

SELECT deptno, AVG(sal)

FROM emp

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值