| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1245 人关注过本帖
标题:同时计算平均分和名次
取消只看楼主 加入收藏
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
结帖率:87.5%
收藏
已结贴  问题点数:30 回复次数:9 
同时计算平均分和名次
各位朋友:

现在有一个表: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
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册: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
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
回复 5楼 sdta
recn() 平均分名次

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

???

可是我不知道该怎么写。
2015-08-17 15:36
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册: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
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
谢谢sdta版主。
2015-08-17 18:13
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
这是 zyg8108 的方法,分享一下:

Select 班级ID, 语文 As 语文平均分, (Select 1 + Count(语文);
    From (Select 班级ID, Avg(语文) As 语文 ;
    From ChengJiBiao ;
    Group By 班级ID) As t1 ;
    Where 语文 > T2.语文) As 平均分名次 ;
    From (Select 班级ID, Avg(语文) As 语文 ;
    From ChengJiBiao ;
    Group By 班级ID) As t2 ;
    Order By 班级ID  && Desc
2015-08-18 12:12
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
想听听其他高手的意见。
2015-08-18 12:13
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
回复 14楼 TonyDeng
是的,我也在思考这个问题。这个题目只是把我的问题简化了,实际上我的问题远比这个例子复杂,

考试ID     班级ID    语文    语文平均分   语文名次   数学   数学平均分   数学名次  ……
1            1        80                              90
1            2        78                              89
2            1        90                             .NULL.
2            2        85                             .NULL.

                        ……

这才是我的实际问题,要求出 多次考试、多个班级、多个学科的平均分及各班在本次考试中的平均分名次,且不是每次考试的学科都一样,比如:第一次考试考了语文、数学两科,而第二次考试只考了语文一科。

大家能提供一个思路吗?
2015-08-18 13:06
eepcvfp
Rank: 2
等 级:论坛游民
帖 子:171
专家分:19
注 册:2013-8-12
收藏
得分:0 
不是隐瞒,其实,是想先把问题简单化,得到一些思路后再思考。

呵呵,我不想一开始就把一个复杂的问题抛给大家帮忙,落得个“不劳而获”的名声。

毕竟大家的时间都是宝贵的,版主勿怪。
2015-08-18 13:10
快速回复:同时计算平均分和名次
数据加载中...
 
   



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

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