| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2169 人关注过本帖, 1 人收藏
标题:求教:关于SELECT查询结果运算和合并的问题
只看楼主 加入收藏
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
收藏
得分:0 
以下是引用aaaaaa在2015-9-13 19:34:59的发言:

我先来吧。明天再来下一个。
统计出 : 代码, 学校, 人数, 语文平均分, 语文优秀数, 语文及格数, 语文不及格数, 语文优秀率, 语文及格率, 最高分, 最低分, 平均分名次
选择 : 按语文平均分名次从高到低排列,其他的排列次序看注释。
请楼主老师斧正!谢谢您。

1. 构造样本数据,如果已经有了相对应的 DBF 文件,这一步可以省略 :
Create Cursor 成绩汇总表 ( 学校 C (10), 代码 C (6), 考生 C(6), 语文 I )

*!*    构造样本数据,假设有20个学校,每校500人,只统计语文成绩
gnPassMark =  72  && 语文及格分数
gnFineMark = 102  && 语文优秀分数
*
gnLower    =  50  && 语文最低分
gnUpper    = 120  && 语文满分分数
*
=Rand(-1)
For I = 1 To 20  && 有20个学校
    For J = 101 To 600  && 每校500人
        Insert Into 成绩汇总表 Values( ;
        "第" + Transform(I, "@LR 99") + "中学", ;           && 学校
        Transform(I, "@LR 999999"), ;                       && 学校代码
        Transform(Int(Rand( )* 100000), "@LR 999999"), ;    && 考生编号
        Int((gnUpper - gnLower + 1) * Rand( ) + gnLower) )  && 语文分数
    Endfor
Endfor


2. 用一条 Select - SQL 语句 :
Select 代码, 学校, 人数, 语文 As 语文平均分, 语文优秀数, 语文及格数, ;
    语文不及格数, 语文优秀率, 语文及格率, 最高分, 最低分, ;
    ( Select 1 + Count(语文) From (Select 代码, 学校, Count (*) As 人数, ;
    Round(Avg(语文) + 0.00, 2) As 语文, ;
    Sum(Iif(语文>=102,1,0)) As 语文优秀数, ;
    Sum(Iif(语文>= 72,1,0)) As 语文及格数, ;
    Sum(Iif(语文 < 72,1,0)) As 语文不及格数, ;
    Round(Sum(Iif(语文>=102,1,0))/Count (*)*100, 2) As 语文优秀率, ;
    Round(Sum(Iif(语文>= 72,1,0))/Count (*)*100, 2) As 语文及格率, ;
    Max(语文) As 最高分, Min(语文) As 最低分 ;
    From 成绩汇总表 Group By 代码, 学校) As t1 Where 语文 > T2.语文) As 平均分名次 ;
    From (Select 代码, 学校, Count (*) As 人数, Round(Avg(语文) + 0.00, 2) As 语文, ;
    Sum(Iif(语文>=102,1,0)) As 语文优秀数, Sum(Iif(语文>=72,1,0)) As 语文及格数, ;
    Sum(Iif(语文 < 72,1,0)) As 语文不及格数, ;
    Round(Sum(Iif(语文>=102,1,0))/Count (*)*100, 2) As 语文优秀率, ;
    Round(Sum(Iif(语文>= 72,1,0))/Count (*)*100, 2) As 语文及格率, ;
    Max(语文) As 最高分, Min(语文) As 最低分 ;
    From 成绩汇总表 Group By 代码, 学校) As t2 ;
    Order By 语文平均分 Desc  && 按语文平均分名次从高到低排列
*!*    排列次序 :
*!*        Order By 代码 Desc        && 按学校代码从高到低排列
*!*        Order By 代码             && 按学校代码从低到高排列
*!*        Order By 语文平均分 Desc  && 按语文平均分名次从高到低排列
*!*        Order By 语文平均分       && 按语文平均分名次从高到低排列
*!*        Order By 语文优秀分 Desc  && 按语文优秀分名次从高到低排列
*!*        Order By 语文优秀分       && 按语文优秀分名次从高到低排列



你说话怎么阴阳怪气的,我是菜鸟没你水平高行了吧。
另外你上面写的那么长,不和我的第一句实际是一码事吗,而且你这句少了及格率优秀率的排名。也就是说你也没法在一句里面实现。
2015-10-04 12:42
快速回复:求教:关于SELECT查询结果运算和合并的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021577 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved