标题:同时计算平均分和名次
只看楼主
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
结帖率:87.5%
已结贴  问题点数:30 回复次数:17 
同时计算平均分和名次
各位朋友:

现在有一个表:ChengJiBiao ,其内容如下:

班级ID    语文
1          80
1          90
1          70
1          60
1          80
2          90
2          70
2          70
2          60
2          90
2          80

能不能通过一条Select语句得到如下结果:

班级ID    语文平均分    平均分名次
1           76.00           2
2           76.67           1

也就是计算出各班的 平均分 和 班级的平均分名次,并且“语文平均分”相同的班级,名次也相同。

请各位帮帮我。谢谢大家。

[ 本帖最后由 eepcvfp 于 2015-8-17 15:08 编辑 ]
搜索更多相关主题的帖子: 朋友 语文 
2015-08-17 13:50
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
干嘛要一条Select语句?
2015-08-17 14:20
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
SELECT *,recn() 平均分名次 FROM (SELECT 班级ID,AVG(语文) 语文平均分 FROM chengjibiao GROUP BY 班级ID ORDER BY 语文平均分 DESC) t1
2015-08-17 14:35
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
以下是引用tlliqi在2015-8-17 14:35:33的发言:

SELECT *,recn() 平均分名次 FROM (SELECT 班级ID,AVG(语文) 语文平均分 FROM chengjibiao GROUP BY 班级ID ORDER BY 语文平均分 DESC) t1


谢谢大侠,您的代码能实现我要的功能,但补充一个问题:

能不能实现如果 语文平均分 相同的班级,名次相同?
2015-08-17 15:06
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
可以实现同分同名次

坚守VFP最后的阵地
2015-08-17 15:30
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
回复 5楼 sdta
recn() 平均分名次

填充的记录编号,如果第2条记录与第3条记录平均分相同,那么第2条记录的名次为2,第三条记录的名次为3。
2015-08-17 15:34
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
能不能统计大于语文平均分的记录数 + 1的方式,Count() + 1 where 语文平均分 > 语文平均分

???

可是我不知道该怎么写。
2015-08-17 15:36
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:166
专家分:15
注 册:2013-8-12
得分:0 
以下是网上的 SQL Server相关用法

表jh03有下列数据:
name score
aa  99
bb  56
cc  56
dd  77
ee  78
ff  76
gg  78
ff  50
 
1. 名次生成方式1,Score重复时合并名次
SELECT * , Place=(SELECT COUNT(DISTINCT Score) FROM jh03 WHERE Score >= a.Score)
FROM jh03 a
ORDER BY Place
结果
Name       Score        Place
---------------- ----------------- -----------
aa         99.00        1
ee         78.00        2
gg         78.00        2
dd         77.00        3
ff         76.00        4
bb         56.00        5
cc         56.00        5
ff         50.00        6
 
2. 名次生成方式2 , Score重复时保留名次空缺
SELECT * , Place=(SELECT COUNT(Score) FROM jh03 WHERE Score > a.Score) + 1
FROM jh03 a
ORDER BY Place
结果
Name       Score        Place
--------------- ----------------- -----------
aa         99.00        1
ee         78.00        2
gg         78.00        2
dd         77.00        4
ff         76.00        5
bb         56.00        6
cc         56.00        6
ff         50.00        8
2015-08-17 15:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
UPDATE命令速度有点慢,可以用VFP自身命令写代码

坚守VFP最后的阵地
2015-08-17 16:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:30 
同分同名次可以参考:
http://blog.

坚守VFP最后的阵地
2015-08-17 17:23



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




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

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