壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2644|回复: 6

求助一个sql程序

[复制链接]
发表于 2007/8/24 11:54:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
3个表
表一是部门表
有字段1.部门号,2部门名
表二是员工信息表
有字段
1,部门号(外键)2员工号,3员工名,4员工民族5.员工年龄6员工现在职位
表三是职位更换表
有三个字段1.员工号,2员工以前职位,3员工现在职位
员工职位每变动一次,就向这个表插入一条数据。
现在求(必须用一条sql语句实现)
1,职位变动大于2次的员工的部门名以及员工名以及变动次数
2.年龄为20-30的员工为多少人,30-40有多少人40-50有多少人50以上的几人
思考半天没有头绪希望高手解答
发表于 2007/8/24 13:07:08 | 显示全部楼层
你是说1,2一块用一条SQL语句实现??不是分别用一条SQL语句??
发表于 2007/8/24 13:20:24 | 显示全部楼层
突然间想回答一下问题

1. select p.员工号, p.姓名, d.部门名称, (
     (select count(*) from 变动表 c where c.员工ID=p.员工ID) ) 变动次数
   from 员工表 p left join 部门表 d on p.部门ID=d.部门ID
   where (select count(*) from 变动表 c where c.员工ID=p.员工ID)>2

2. 类同上面的写法
发表于 2007/8/24 13:28:24 | 显示全部楼层
表A: DEPT
字段:DEPT_NUM,DEPT_NAME
表B:EMPLOYEE
字段:DEPT_NUM,EMP_NUM,EMP_NAME,EMP_AGE,EMP_NATION,EMP_POSITION_NEW
表COSITION
字段:EMP_NUM,EMP_POSITION_OLD,EMP_POSITION_NEW

创建表以及往里面插入测试数据:
Create Table DEPT(DEPT_NUM Number(10),DEPT_NAME Varchar2(20))

Create Table EMPLOYEE(DEPT_NUM Number(10),EMP_NUM Number(10),EMP_NAME VARCHAR2(20),EMP_POSITION_NEW Varchar2(20),EMP_AGE Number(10))
Create Table POSITION(EMP_NUM Varchar(10),EMP_POSITION_OLD Varchar2(20),EMP_POSITION_NEW Varchar2(20))

Insert Into DEPT Values(100,'计算机系');
Insert Into DEPT Values(120,'自动化系');
Insert Into DEPT Values(130,'英语系');
Insert Into DEPT Values(140,'会计系');

Insert Into EMPLOYEE Values(100,001,'张三','主任',23);
Insert Into EMPLOYEE Values(120,002,'李四','处长',34);
Insert Into EMPLOYEE Values(130,003,'马五','局长',35);
Insert Into EMPLOYEE Values(140,004,'王六','院长',55);

Insert Into POSITION Values(001,'副主任','主任');
Insert Into POSITION Values(001,'主任助理','副主任');
Insert Into POSITION Values(002,'副处长','处长');
Insert Into POSITION Values(003,'副局长','局长');
Insert Into POSITION Values(003,'主任','副局长');
Insert Into POSITION Values(003,'副主任','主任');
Insert Into POSITION Values(004,'副院长','院长');
Insert Into POSITION Values(004,'主任','副院长');
Insert Into POSITION Values(004,'副主任','主任');
Insert Into POSITION Values(004,'处长','副主任');
Insert Into POSITION Values(004,'副处长','处长');
Insert Into POSITION Values(005,'主任助理','副处长');

第一个问题
SELECT DEPT_NAME,EMP_NAME,d.NUM
FROM DEPT a,EMPLOYEE b,
(SELECT c.EMP_NUM,count(c.EMP_POSITION_OLD) NUM
FROM POSITION c
GROUP BY c.EMP_NUM) d
WHERE a.DEPT_NUM=b.DEPT_NUM
  AND b.EMP_NUM=d.EMP_NUM
  AND d.NUM>=2
  
第二个问题
SELECT a.NUM 从20到29,b.NUM 从30到39 ,c.NUM 从40到49,d.NUM 大于50
FROM
(SELECT COUNT(EMP_NUM) NUM
FROM EMPLOYEE
WHERE EMP_AGE>=20
   AND EMP_AGE<=29
) a,
(SELECT COUNT(EMP_NUM) NUM
FROM EMPLOYEE
WHERE EMP_AGE>=30
   AND EMP_AGE<=39
) b,
(SELECT COUNT(EMP_NUM) NUM
FROM EMPLOYEE
WHERE EMP_AGE>=40
   AND EMP_AGE<=49
) c,
(SELECT COUNT(EMP_NUM) NUM
FROM EMPLOYEE
WHERE EMP_AGE>=50
) d
发表于 2007/8/24 15:29:06 | 显示全部楼层
原帖由 jessie 于 2007-8-24 13:28 发表
表A: DEPT
字段:DEPT_NUM,DEPT_NAME
表B:EMPLOYEE
字段:DEPT_NUM,EMP_NUM,EMP_NAME,EMP_AGE,EMP_NATION,EMP_POSITION_NEW
表COSITION
字段:EMP_NUM,EMP_POSITION_OLD,EMP_POSITION_NEW

创建表以及往里 ...

jessie 太熱心了,連測試數據都加上了,感動...
发表于 2007/8/24 15:36:15 | 显示全部楼层
俺要测试一下才敢发啊.要不然错误怎么办.
 楼主| 发表于 2007/8/24 16:01:04 | 显示全部楼层

真感动

这么多达人帮忙真是感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 15:08 , Processed in 0.013370 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表