以SCOTT用户的dept表和emp表为例1、创建一个查询,按照工作进行分组,求出各组内分别在10、20、30部门工作的雇员的工资的总数,以及各组的工资的合计。
设置恰当的列标题。select
2、创建一个查询显示所有雇员的数量以及分别在1981、1982、1983年加入公司的雇员的数量。
3、编写一个查询显示雇员的最高工资和最低工资的差距。
4、编写一个查询显示各个部门员工的平均工资。
5、编写一个查询显示各个部门中超过该部门平均工资的员工的信息。
6、编写一个查询显示非销售人员工作名称以及从事同一工作雇员的月工资总和。
7、计算销售部门的人员工资总和、工资的最大值、最小值、和平均值。
8、统计各个部门人数占雇员总数的百分比。 部门编号 部门名称 部门人数 百分比(%) 10 sales 4 4select e.deptno as "部门编号",
count(*) as "部门人数",
(round((count(*)/(tmntp.c)*100,2))||'%' as "部门人数百分比")from emp e,(select count(*) cnt from emp) tmp
group by e.deptno,tmp.cnt
order by e.deptno asc;
9、查询谁是第5个进入公司的雇员,查询其详细信息?
10、查询列出入职日期前五名雇员。
呵呵,帮个忙
设置恰当的列标题。select
2、创建一个查询显示所有雇员的数量以及分别在1981、1982、1983年加入公司的雇员的数量。
3、编写一个查询显示雇员的最高工资和最低工资的差距。
4、编写一个查询显示各个部门员工的平均工资。
5、编写一个查询显示各个部门中超过该部门平均工资的员工的信息。
6、编写一个查询显示非销售人员工作名称以及从事同一工作雇员的月工资总和。
7、计算销售部门的人员工资总和、工资的最大值、最小值、和平均值。
8、统计各个部门人数占雇员总数的百分比。 部门编号 部门名称 部门人数 百分比(%) 10 sales 4 4select e.deptno as "部门编号",
count(*) as "部门人数",
(round((count(*)/(tmntp.c)*100,2))||'%' as "部门人数百分比")from emp e,(select count(*) cnt from emp) tmp
group by e.deptno,tmp.cnt
order by e.deptno asc;
9、查询谁是第5个进入公司的雇员,查询其详细信息?
10、查询列出入职日期前五名雇员。
呵呵,帮个忙
SELECT decode(grouping_id(t.job), 1, '合计', t.job) job,
decode(grouping_id(t.deptno), 1, '小计', t.deptno) deptno,
SUM(t.sal) sumsal
FROM emp t
WHERE t.deptno IN (10, 20, 30)
GROUP BY ROLLUP(t.job, t.deptno);
--2
SELECT to_char(t.hiredate, 'yyyy') YEAR, COUNT(*) cnt
FROM emp t
WHERE to_char(t.hiredate, 'yyyy') IN ('1981', '1982', '1983')
GROUP BY ROLLUP(to_char(t.hiredate, 'yyyy'));
--3
SELECT MAX(t.sal) - MIN(t.sal) FROM emp t;
--4
SELECT t.deptno, AVG(sal) avgsal FROM emp t GROUP BY t.deptno;
--5
SELECT *
FROM emp t
WHERE t.sal > (SELECT AVG(sal) FROM emp a WHERE a.deptno = t.deptno);
--6
SELECT t.job, SUM(t.sal) sumsal
FROM emp t
WHERE t.job <> 'SALESMAN'
GROUP BY t.job;
--7
SELECT SUM(t.sal) sumsal,
MAX(t.sal) maxsal,
MIN(t.sal) minsal,
AVG(t.sal) avgsal
FROM emp t
WHERE t.job = 'SALESMAN';
--8
SELECT a.deptno, a.dname, c.cnt, c.cnt / total * 100
FROM dept a,
(SELECT b.deptno, COUNT(*) cnt, (SELECT COUNT(*) FROM emp) total
FROM emp b
GROUP BY b.deptno) c
WHERE a.deptno = c.deptno;
--9
SELECT *
FROM (SELECT rownum rn, a.*
FROM (SELECT t.* FROM emp t ORDER BY t.hiredate) a)
WHERE rn = 5;
--10
SELECT *
FROM (SELECT rownum rn, a.*
FROM (SELECT t.* FROM emp t ORDER BY t.hiredate) a)
WHERE rn <= 5;
1.select * from (select e.* ,sum(e.sal) over(partition by job,deptno ) 组内各个部门工作的雇员工资总数,
sum(e.sal) over(partition by job) 各组的工资的合计
from emp e ) ;
SELECT job,
SUM(DECODE(deptno,10,sal))"10",
SUM(DECODE(deptno,20,sal))"20",
SUM(DECODE(deptno,30,sal))"30",
SUM(sal)total
FROM SCOTT.emp
GROUP BY job