职工工资数据库 查询

设有一个职工工资数据库 gz.dbc ,存放于 visual foxpro 的默认工作目录下,其中包括有三个数据表,分别是工资表 gz.dbf 、职工表 zg.dbf 、单位代码表 dw.dbf
工资表 gz.dbf
单位
编号
固定工资
活工资
津贴
应发合计
房租
水电气
应扣合计
实发工资
1
0001
489
273
34
0
50
12
0
0
1
0002
801
448
43
0
65
35
0
0
6
0003
691
386
51
0
39
61.01
0
0
6
0004
529
296
73
0
54
45
0
0
3
0005
585
327
39
0
61
65
0
0
2
0006
324
181
54
0
43
21
0
0
3
0007
546
305
63
0
52
34
0
0
6
0008
789
441
29
0
35
31
0
0
1
0009
579
324
43
0
46
53
0
0
2
0010
814
455
67
0
54
29
0
0
 
职工表 zg.dbf
编号
单位
姓名
性别
出生日期
职称
0001
1
张三
1966-5-21
副教授
0002
1
李四
1967-4-30
副教授
0003
6
王五
1968-9-21
高工
0004
6
陈六
1970-7-23
讲师
0005
3
何七
1972-4-29
讲师
0006
2
李明
1966-5-4
副教授
0007
3
王阳
1972-8-1
会计师
0008
6
张红
1976-4-1
统计师
0009
1
陈洋
1980-2-1
助教
0010
2
成实
1978-10-28
助教
单位代码表 dw.dbf
单位
名称
1
办公室
2
财务科
3
人事部
4
理学院
5
文学院
6
法学院
问题:
1.     写出“打开数据库 gz.dbc ”的 vfp 命令(或命令序列)
2.     写出“计算工资表中的应发合计、应扣合计、实发工资”的 vfp 命令
3.     写出“统计实发工资不低于 800 元的职工人数”的 vfp 命令
4.     写出“求出实发工资最高的职工姓名”的 vfp 命令
5.     写出“统计每个单位的职工人数的 sql select 命令,查询结果中应包含单位代码、单位名称、职工人数,并将结果存入 c:\ABC.dbf 中”的 vfp 命令
6.     写出“产生包含每个单位的单位名称、最高实发工资、最低实发工资、实发工资总计、平均实发工资 5 项数据的查询结果,并将结果存入从 c:\ABC2.dbf 中”的 vfp 命令
7.     写出“产生包含每个职工姓名、所在单位名称、实发工资 3 项数据的查询结果,并将结果存入 c:\ABC1.dbf 中”的 vfp 命令
8.     写出“产生包含字段 TJ1 TJ2 的表 ABC3.dbf ,其中 TJ1 表示实发工资低于 800 元的职工人数, TJ2 表示实发工资不低于 800 元的职工人数”的 vfp 命令。
9.     写出“将工资表首先单位排序,在同一单位内按实发工资降序排序,并将结果以浏览表格的形式显示”的 vfp 命令
10. 写出“工资表中增加一个 三八节另发(数值型, 8 2 )的字段”的 vfp 命令
11. 写出“对于男职工三八节另发字段的值为 100 元,对于女职工三八节另发字段的值为 200 元,并产生一个包括字段职工姓名、性别、三八节另发的表 ABC4.dbf ”的 vfp 命令
12. 写出“删除工资表中的水电气字段”的 vfp 命令。
 
答案:
1.     写出“打开数据库 gz.dbc ”的 vfp 命令(或命令序列)
Open database gz.dbc
2.     写出“计算工资表中的应发合计、应扣合计、实发工资”的 vfp 命令
Use gz.dbf
Replace all 应发合计 with 固定工资 + 活工资 + 津贴
Replace all 应扣合计 with 房租 + 水电气
Replace all 实发工资 with 固定工资 + 活工资 + 津贴 - 房租 - 水电气
3.     写出“统计实发工资不低于 800 元的职工人数”的 vfp 命令
方法一:
Select count( 编号 ) from gz where 实发工资 >=800
方法二: count for 实发工资 >=800 to x
x
4.     写出“求出实发工资最高的职工姓名”的 vfp 命令
方法一:
Select max( 实发工资 ) from gz into array x
Select zg. 姓名 ,gz. 实发工资 from zg,gz where zg. 编号 =gz. 编号 and ;
gz. 实发工资 =x
方法二:
Use gz
Index on 实发工资 tag abc
Go bottom
Select 姓名 from zg where 编号 =gz. 编号
5. 写出 统计每个单位的职工人数的 SQLSELECT 命令 , 查询结果中应包含单位代码、单位名称、职工人数 , 并将结果存入 C:\ABC.DBF vfp 命令 .
Select dw. 单位 ,dw. 名称 ,count(zg. 编号 ) from dw,zg where dw. 单位 ;
=zg. 单位 group by zg. 单位 into dbf C:\ABC.DBF
6. 写出“产生包含每个单位的单位名称、最高实发工资、最低实发工资、实发工资总计、平均实发工资 5 项数据的查询结果,并将结果存入从 c:\ABC2.dbf 中”的 vfp 命令
Select dw. 名称 ,max(gz. 实发工资 ),min(gz. 实发工资 ),;
sum(gz. 实发工资 ),avg(gz. 实发工资 ) from gz,dw ;
 where gz. 单位 =dw. 单位 group by gz. 单位 into dbf c:\ABC2.dbf
7 . 写出“产生包含每个职工姓名、所在单位名称、实发工资 3 项数据的查询结果,并将结果存入 c:\ABC1.dbf 中”的 vfp 命令
Select zg. 姓名 ,dw. 名称 ,gz. 实发工资 from zg,dw,gz ;
Where  zg. 编号 =gz. 编号 and zg. 单位 =dw. 单位 ;
 into dbf  C:\ABC1.DBF
8 . 写出“产生包含字段 TJ1 TJ2 的表 ABC3.dbf ,其中 TJ1 表示实发工资低于 800 元的职工人数, TJ2 表示实发工资不低于 800 元的职工人数”的 vfp 命令。
方法一 :
Use gz.dbf
Count for 实发工资 <800 to x1
Count for 实发工资 >=800 to x2
Create table ABC3(TJ1 N(2),TJ2 N(2))
insert into ABC3(tj1,tj2) values(x1,x2)
注意:这里不可使用 replace …… with ……语句
方法二 :
Select sum(iif( 实发工资 <800,1,0)) as tj1,sum(iif( 实发工资 <800,0,1));
 as tj2 from gz into table c:\abc3
9 . 写出“将工资表首先单位排序,在同一单位内按实发工资降序排序,并将结果以浏览表格的形式显示”的 vfp 命令
SELECT * FROM GZ ORDER BY 单位 , 实发工资 desc
10 . 写出“工资表中增加一个 三八节另发(数值型, 8 2 )的字段”的 vfp 命令
Alter table gz  add 三八节另发 N(8,2)
11. 写出“对于男职工三八节另发字段的值为 100 元,对于女职工三八节另发字段的值为 200 元,并产生一个包括字段职工姓名、性别、三八节另发的表 ABC4.dbf ”的 vfp 命令
方法一 :
Select zg. 姓名 ,zg. 性别 ,gz. 三八节另发 from zg,gz where ;
zg. 编号 =gz. 编号 into dbf ABC4
USE ABC4.DBF
Replace all 三八节另发 with 100 for 性别 =”
Replace all 三八节另发 with 200 for 性别 =”
方法二 :
Select zg. 姓名 ,zg. 性别 ,gz. 三八节另发 from zg,gz where ;
zg. 编号 =gz. 编号 into dbf ABC4
update abc4 set 三八节另发 =iif( 性别 =” ”,100,200)
12 . 写出“删除工资表中的水电气字段”的 vfp 命令。
ALTER TABLE GZ DROP 水电气

你可能感兴趣的:(职场,工资,休闲,职工,单位代码)