| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2162 人关注过本帖, 1 人收藏
标题:求教:关于SELECT查询结果运算和合并的问题
取消只看楼主 加入收藏
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
收藏(1)
 问题点数:0 回复次数:6 
求教:关于SELECT查询结果运算和合并的问题
一个学生成绩表,有学校、语文数学成绩3个字段,现在需要算出各学校的每科的及格率、优秀率、平均分,假设语文及格分数是A1,数学及格分数是A2,学校XX1总人数100人,语文及格50人,数学及格40人。
 SELECT 学校,COUNT (*) as 及格人数  FROM 表 WHERE 语文>=A1 GROUP BY 学校 UNION ALL
 SELECT 学校,COUNT (*) as 学校人数  FROM 表  GROUP BY 学校 ,结果是
学校  语文及格人数  
XX1     50   
XX1     100
...
请问怎样如下显示在一个查询结果或表中呢?
学校 学校人数  语文及格人数  语文及格率   
XX1     100        50           50%      

下面的能实现吗?
学校 学校人数 语文及格人数 语文及格率   数学及格人数  数学及格率
XX1     100      50            50%          40          40%
多谢指点!
搜索更多相关主题的帖子: 成绩表 数学 学校 语文 
2015-09-04 23:37
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
收藏
得分:0 
回复 2楼 sdta
什么意思啊版主?
2015-09-05 11:58
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
收藏
得分:0 
SELECT BYXX,COUNT (*) as 人数,SUM(IIF(语文>=102,1,0)) AS 语文优秀 FROM ZZ15 GROUP BY BYXX ORDER BY BYXX,这句可以了,现在不知道怎么把优秀及格率也一并查询出来
2015-09-05 14:45
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
收藏
得分:0 
SELECT byxx,人数,平均分,语文优秀数,语文及格数,100*语文优秀数/人数 语文优秀率,100*语文及格数/人数 语文及格率 FROM (SELECT BYXX,COUNT (*) as 人数,AVG(语文) AS 平均分,SUM(IIF(语文>=102,1,0)) AS 语文优秀数,SUM(IIF(语文>=72,1,0)) AS 语文及格数 FROM ZZ15 GROUP BY BYXX) A
这句实现了
2015-09-05 15:40
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
收藏(1)
得分:0 
回复 9楼 taifu945
把最终的结果贴上来,方便有同样问题的老师。
SELECT byxx,人数,语文平均分,语文优秀数,语文及格数,100*语文优秀数/人数 语文优秀率,100*语文及格数/人数 语文及格率 ;
FROM (SELECT BYXX,COUNT (*) as 人数,AVG(语文) AS 语文平均分,SUM(IIF(语文>=102,1,0)) AS 语文优秀数,SUM(IIF(语文>=72,1,0)) AS 语文及格数 ;
FROM ZZ15 GROUP BY BYXX ORDER BY BYXX)  A INTO CURSOR 语文
SELECT *,RECNO() AS 优秀率名次 FROM (SELECT * FROM 语文 ORDER BY 语文优秀率 DESC) A INTO CURSOR 语文
SELECT *,RECNO() AS 及格率名次 FROM (SELECT * FROM 语文 ORDER BY 语文及格率 DESC) A INTO CURSOR 语文
SELECT *,RECNO() AS 平均分名次 FROM (SELECT * FROM 语文 ORDER BY 语文平均分 DESC) A INTO CURSOR 语文
SELECT * FROM 语文 ORDER BY BYXX  INTO CURSOR 语文
COPY TO 1语文.XLS XL5
其他科目只需要CTRL+F替换名称和分值即可。最后全部的表用EXCEL高级工具箱合并到一个工作簿内,所有考试成绩需要分析的项目都全了。
2015-09-09 22:03
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
收藏
得分:0 
以下是引用taifu945在2015-9-15 14:56:14的发言:

我开个玩笑,你表介意。

您说的本来就没什么问题,我经常看到你给别人解答问题。。
2015-10-04 12:37
星辰大海
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.016853 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved