職工工資數據庫 查詢

設有一個職工工資數據庫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.     寫出“產生包含字段TJ1TJ2的表ABC3.dbf,其中TJ1表示實發工資低於800元的職工人數,TJ2表示實發工資不低於800元的職工人數”的vfp命令。

9.     寫出“將工資表首先單位排序,在同一單位內按實發工資降序排序,並將結果以瀏覽表格的形式顯示”的vfp命令

10. 寫出“工資表中增加一個 三八節另發(數值型,82)的字段”的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.DBFvfp命令.

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.寫出“產生包含字段TJ1TJ2的表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.寫出“工資表中增加一個 三八節另發(數值型,82)的字段”的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 水電氣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章