程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 查詢出部門名稱、部門的員工數、部門的平均工資、部門的最低收入雇員姓名和最高收入雇員的姓名

查詢出部門名稱、部門的員工數、部門的平均工資、部門的最低收入雇員姓名和最高收入雇員的姓名

編輯:DB2教程

查詢出部門名稱、部門的員工數、部門的平均工資、部門的最低收入雇員姓名和最高收入雇員的姓名


如題:

查詢出部門名稱、部門的員工數、部門的平均工資、部門的最低收入雇員姓名和最高收入雇員的姓名

這是oracle的默認Scott用戶下面的emp 和 dept 表間的一道思考題。

雇員表(emp)

記錄了每個雇員的基本信息

NO 字段 類型 描述

1 empno Number(4) 雇員編號

2 ename Varchar2(10) 雇員姓名

3 job Varchar2(9) 工作職位

4 mgr Number(4) 雇員的領導(經理)編號

5 hierdate date 入職日期

6 sal Number(7,2) 月薪/工資

7 comm Number(7,2) 獎金

8 deptno Number(2) 雇員所屬部門的編號

部門表(emp)

記錄了每個部門的基本信息

NO 字段 類型 描述

1 deptno Number(2) 部門編號(唯一)

2 dname Varchar2(14) 部門名稱

3 loc Varchar2(13) 地址


分析:要查詢出部門的員工數,平均工資,最低收入雇員姓名和最高收入雇員姓名,必須先知道部門的最高收入和最低收入

第一步:查詢出部門名稱,部門員工數,部門平均工資,部門最低收入和最高收入

select deptno, count(*), avg(sal), min(sal), max(sal) from emp group by deptno;

\

<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KCjxwPrXatv6yvaO6sunRr9futc3K1cjr1d+1xNDVw/s8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:sql;">select e.ename from emp e, (select deptno, count(*), avg(sal), min(sal) min_sal, max(sal) max_sal from emp group by deptno) t where e.deptno = e.deptno and (e.sal = min_sal);

\

同理,也可以查詢最高收入者的姓名

select e.ename 
from emp e, (select deptno, count(*), avg(sal), min(sal) min_sal, max(sal) max_sal from emp group by deptno) t 
where e.deptno = e.deptno
and (e.sal = max_sal);

\
那如何同時查詢最低收入者和最高收入者的姓名呢?

第三步:給第一次查詢出來的部門最高收入和最低收入同時關聯兩張emp 表,分別獲取最高收入者和最高收入者的姓名

select d.dname, t.nu, t.avg_sal, t.min_sal, t.max_sal, e.ename, s.ename 
from dept d, emp e, emp s ,
(select deptno, count(*) nu, avg(sal) avg_sal, min(sal) min_sal, max(sal) max_sal from emp group by deptno) t
where d.deptno = t.deptno 
and (e.deptno = t.deptno and e.sal = t.min_sal) 
and (s.deptno = t.deptno and s.sal = t.max_sal);


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved