标题:求教:关于SELECT查询结果运算和合并的问题
只看楼主
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
 问题点数:0 回复次数:20 
求教:关于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
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
要有诚意

坚守VFP最后的阵地
2015-09-05 10:53
星辰大海
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用星辰大海在2015-9-5 11:58:35的发言:

什么意思啊版主?

VFP最好有 数据+代码 才好说话,是这个意思吧?
2015-09-05 15:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用星辰大海在2015-9-5 14:45:17的发言:

SELECT BYXX,COUNT (*) as 人数,SUM(IIF(语文>=102,1,0)) AS 语文优秀 FROM ZZ15 GROUP BY BYXX ORDER BY BYXX,这句可以了,现在不知道怎么把优秀及格率也一并查询出来

“一并”不成,可先试试二并或三并,行的话说不定“一并”真的能出现。
2015-09-05 15:31
星辰大海
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
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
楼上厉害
2015-09-05 17:19
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
7楼的查询有瑕疵:少算了数学的各项指标。
2015-09-05 21:19
星辰大海
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-9-4
得分: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-457015-1-1.html




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

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