VFP设计查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查询和视图
1.已知学生(XS)表中含有字符型字段班级编号(bjbh)和日期型字段出生日期(csrq)。在TEST项目中已存在查询chaxun,按如下要求修改该查询:
基于学生(XS)表以班级为单位,按出生年份统计各班各年份出生的人数,要求输出字段为:bjbh、出生年份、人数,查询结果首先按班级编号升序排序,一个班级中再按人数多少降序排序,查询结果输出到临时表xsnfrs。
SELECT Xs.bjbh, year(csrq) as 出生年份, count(*) as 人数;
FROM sjk!xs;
GROUP BY Xs.bjbh, 2;
ORDER BY Xs.bjbh, 3 DESC INTO CURSOR xsnfrs
2.已知学生(XS)表中含有字符型字段班级编号(bjbh)和日期型字段出生日期(csrq)。在TEST项目中已存在查询chaxun,按如下要求修改该查询:
基于学生(XS)表以班级为单位,按出生月份统计各班上半年和下半年出生的人数,要求输出字段为:bjbh、时间、人数。如果出生月份在1至6月,则时间为“上半年”,如果出生月份在7至12月,则时间为“下半年”,查询结果首先按班级编号升序排序,一个班级中再按时间降序排序,查询结果输出到临时表xsrs。
SELECT Xs.bjbh, IIF(MONTH(csrq)<7,"上半年","下半年") AS 时间,;
COUNT(*) AS 人数;
FROM sjk!xs;
GROUP BY Xs.bjbh, 2;
ORDER BY Xs.bjbh, 3 DESC INTO CURSOR xsrs
3.在TEST项目中已存在查询chaxun,且在SJK中包含一个名为XSCJVIEW的视图。按如下要求修改查询:
基于XSCJVIEW视图和KC表统计各学生所学必修课的门数和总学分,学生所学课程的学分必须当成绩(cj)在60分以上时才能取
得。要求输出字段为:xh、xm、门数、总学分,查询结果按学号
升序排序。(分组。筛选)
SELECT Xscjview.xh, Xscjview.xm, COUNT(*) AS 门数,;
SUM(iif(xscjview.cj>=60,kc.xf,0)) as 总学分;
F ROM sjk!xscjview INNER JOIN sjk!kc ON Xscjview.kcdh = Kc.kcdh;
WHERE Kc.bxk = .t.;
G ROUP BY Xscjview.xh;
O RDER BY Xscjview.xh
4.在TEST项目中已存在查询chaxun,且在SJK中包含一个名为XSCJVIEW的视图。按如下要求修改查询:
基于XSCJVIEW视图和KC表统计各学生必修课和非必修课的门数和总学分,学生所学课程的学分必须当成绩(cj)在60分以上时
才能取得。要求输出字段为:xh、xm、课程性质、门数、总学分,其中“课程性质”字段依据KC表中的bxk字段取值为“必修”
或“选修”(若bxk字段值为“.T.”,则“课程性质”字段取值为
“必修”,否则取值为“选修”)。查询结果按学号和课程性质升序
排序。
SELECT Xscjview.xh, Xscjview.xm, IIF(Kc.bxk,"必修","选修") AS 课程性质,;
COUNT(*) AS 门数, SUM(IIF(Xscjview.cj=>60,Kc.xf,0)) AS 总学分;
FROM sjk!xscjview INNER JOIN sjk!kc ON Xscjview.kcdh = Kc.kcdh;
GROUP BY Xscjview.xh, 3;
ORDER BY Xscjview.xh, 3
5.在TEST项目中已存在查询chaxun,按如下要求修改查询:
基于两个工资表(GZ和GZC)查询同一个教师在两个表中的基本工资(jbgz)不一致的记录。要求输出gh、xm字段以及两个表中的jbgz字段,并按两个jbgz差的绝对值的降序排序。
SELECT Gzc.gh, Gzc.xm, Gz.jbgz, Gzc.jbgz, ABS(Gz.jbgz-Gzc.jbgz) AS 差额;
FROM sjk!gz INNER JOIN gzc ON Gz.gh = Gzc.gh;
WHERE Gz.jbgz <> gzc.jbgz;
ORDER BY 5 DESC
6.假设现有GZ表中的若干工资项将有所变动:基本工资(jbgz)每人增加120元;岗位津贴(gwjt)每人增加20%;男女职工的综合津贴(zhjt)分别加10元和50元。但暂时又不希望更改GZ表中的数据,希望通过查询预览一下变动后的工资情况,按如下要求修改TEST 项目中的查询chaxun:
基于JS表和GZ表查询变动后的工资情况,输出字段为:gh, xm, xb, jbgz, jbgz2, gwjt, gwjt2, zhjt, zhjt2,其中字段名末位是“2”的字段表示变动后的工资项。要求按gh升序排序,且仅显示排在前10%的记录,结果输出到VFP主窗口中。
SELECT TOP 10.00 PERCENT Js.gh, Js.xm, Js.xb, Gz.jbgz, ;
Gz.jbgz+120 AS jbgz2, Gz.gwjt, Gz.gwjt*1.2 AS gwjt2, Gz.zhjt, ;
Gz.zhjt+IIF(xb="男",10,50) AS zhjt2;
FROM sjk!js INNER JOIN sjk!gz ON Js.gh = Gz.gh;
ORDER BY Js.gh TO SCREEN