- 浏览: 2162528 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1878)
- [网站分类]ASP.NET (141)
- [网站分类]C# (80)
- [随笔分类]NET知识库 (80)
- [随笔分类]摘抄文字[非技术] (3)
- [随笔分类]养生保健 (4)
- [网站分类]读书区 (16)
- [随笔分类]赚钱 (7)
- [网站分类].NET新手区 (233)
- [随笔分类]网站 (75)
- [网站分类]企业信息化其他 (4)
- [网站分类]首页候选区 (34)
- [网站分类]转载区 (12)
- [网站分类]SQL Server (16)
- [网站分类]程序人生 (7)
- [网站分类]WinForm (2)
- [随笔分类]错误集 (12)
- [网站分类]JavaScript (3)
- [随笔分类]小说九鼎记 (69)
- [随笔分类]技术文章 (15)
- [网站分类]求职面试 (3)
- [网站分类]其他技术区 (6)
- [网站分类]非技术区 (10)
- [发布至博客园首页] (5)
- [网站分类]jQuery (6)
- [网站分类].NET精华区 (6)
- [网站分类]Html/Css (10)
- [随笔分类]加速及SEO (10)
- [网站分类]Google开发 (4)
- [随笔分类]旅游备注 (2)
- [网站分类]架构设计 (3)
- [网站分类]Linux (23)
- [随笔分类]重要注册 (3)
- [随笔分类]Linux+PHP (10)
- [网站分类]PHP (11)
- [网站分类]VS2010 (2)
- [网站分类]CLR (1)
- [网站分类]C++ (1)
- [网站分类]ASP.NET MVC (2)
- [网站分类]项目与团队管理 (1)
- [随笔分类]个人总结 (1)
- [随笔分类]问题集 (3)
- [网站分类]代码与软件发布 (1)
- [网站分类]Android开发 (1)
- [网站分类]MySQL (1)
- [网站分类]开源研究 (6)
- ddd (0)
- 好久没写blog了 (0)
- sqlserver (2)
最新评论
-
JamesLiuX:
博主,能组个队么,我是Freelancer新手。
Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出? -
yw10260609:
我认为在混淆前,最好把相关代码备份一下比较好,不然项目完成后, ...
DotFuscator 小记 -
日月葬花魂:
大哥 能 加我个QQ 交流一下嘛 ?51264722 我Q ...
web应用程序和Web网站区别 -
iaimg:
我想问下嵌入delphi写的程序总是出现窗体后面感觉有个主窗体 ...
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部 -
iaimg:
代码地址下不了啊!
C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
24、查询学生平均成绩及其名次
答:SELECT 1+(SELECT COUNT( distinct 平均成绩)
FROM (SELECT S#,AVG(score) AS 平均成绩
FROM SC
GROUP BY S#
) AS T1
WHERE 平均成绩 > T2.平均成绩) as 名次,
S# as 学生学号,平均成绩
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S#
) AS T2
ORDER BY 平均成绩 desc;
--------------------------------------------------------------------------------
网上找了一下,没有分析的文章,或许太简单了。那我们自己来分析。这里涉及到一个SELECT 表1.* FROM 表1 where 表1.字段=表2.字段的表遍历匹配的问题(表1、表2是数据库中同一个表或同一个表查询结果的别名)。
但是代码一大堆,看得一头雾水,我们先拆开来,看T1表的查询(先去了COUNT有助于我们的分析)。
view plaincopy to clipboardprint?
SELECT distinct 平均成绩 FROM (SELECT S#,AVG(score) AS 平均成绩
FROM SC GROUP BY S#) T1
SELECT distinct 平均成绩 FROM (SELECT S#,AVG(score) AS 平均成绩
FROM SC GROUP BY S#) T1
图 T1
接着看,T2表的查询。(加入"order by 平均成绩",可以让之后的对比效果更明显)
view plaincopy to clipboardprint?
SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# order by 平均成绩
SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# order by 平均成绩
图 T2
对比T1和T2的SQL查询语句及结果,可以看出,除了distinct的效果以外,其他代码基本上一致。
拆分开来看,是简单的SQL语句,那么联合起来是一种什么效果呢?语句执行的顺序又是什么呢?
我们参照图T1和图T2一步步来描述语句的执行顺序。
view plaincopy to clipboardprint?
循环第一次
for (select @i=1 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 87
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于87的
{
return count(T1.平均成绩); //返回0个(T1中没有大于87的)
}
}
循环第二次
for (select @i=2 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 85
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于85的
{
return count(T1.平均成绩); //返回1个(T1中刚好有87,大于T2的85)
}
}
循环第三次
for (select @i=3 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 85
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于85的
{
return count(T1.平均成绩); //返回1个(T1中刚好有87,大于T2的85)
}
}
循环第四次
for (select @i=4 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 83
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于85的
{
return count(T1.平均成绩); //返回2个(T1中刚好有87,85,大于T2的83)
}
}
以此类推... 直到遍历匹配完毕。
循环第一次
for (select @i=1 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 87
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于87的
{
return count(T1.平均成绩); //返回0个(T1中没有大于87的)
}
}
循环第二次
for (select @i=2 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 85
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于85的
{
return count(T1.平均成绩); //返回1个(T1中刚好有87,大于T2的85)
}
}
循环第三次
for (select @i=3 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 85
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于85的
{
return count(T1.平均成绩); //返回1个(T1中刚好有87,大于T2的85)
}
}
循环第四次
for (select @i=4 from T2 order by 平均成绩 desc)
{
//取出 T2.平均成绩 = 83
if(T1.平均成绩 > T2.平均成绩) //即扫一遍T1看下有没有大于85的
{
return count(T1.平均成绩); //返回2个(T1中刚好有87,85,大于T2的83)
}
}
以此类推... 直到遍历匹配完毕。
清晰理解了这一点,相信整段SQL代码就不难理解了。完整查询结果如下:
另外需要补充一点的是distinct在这里的使用效果。
需不需要distinct,要看排名的要求方式,要distinct是指顺序排名(如上面的例子,则为1,2,2,3...),不要是指跳序排名(如上面的例子,则为1,2,2,4...)。可见后者其实就是我们日常成绩的排名方式。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/djlzxzy/archive/2009/02/16/3897069.aspx
发表评论
-
你应该知道的10个奇特的 HTML5 单页网站
2013-10-25 21:46 807网页设计师努力寻找新的方式来展现内容。其中一个大的趋势是单页 ... -
用tsmmc.MSC方式在xp和Win7集中管理多台Win2003服务器
2010-12-18 14:08 1338远程桌面管理:tsmmc.msc在xp系统中的使用wind ... -
.Net 4.0并行库实用性演练[1]
2010-12-23 21:21 1198自VS2010发布近半年了,虽然整天想学习新东西,要更新到自己 ... -
Net 4.0并行库实用性演练
2010-12-23 22:03 1076引言 随着CPU多核的普及,编程时充分利用这个特性越显重要。上 ... -
.net 代码混淆原理性实践
2010-11-21 21:53 1669现在我们已经很清楚,托管PE文件可以轻而易举的被反编译,如果您 ... -
ASP.NET中的两个Cookie类:HttpCookie类与Cookie类
2010-07-29 09:43 1915System.Web.HttpCookie类, ... -
去除狂人采集器添加在帖子中的广告信息
2010-06-18 16:28 2200去除狂人采集器添加在帖子中的广告信息 我的网站要转型 ... -
petshop4.0 详解之四(PetShop之ASP.NET缓存)
2010-04-03 09:01 1385如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这 ... -
.NET 开发系统 -知识 点
2010-04-01 09:12 1298安全 性能 调试 Security ... -
织梦部分采集规则-DedeCms
2010-04-01 09:13 9231.幻剑书盟小说采集节点 {dede:comments} ... -
网站静态化结构
2009-12-16 09:21 801写在前头 静态化是解决减轻网站压力,提高网站访问速度的常用方 ... -
Memcache安装
2009-12-16 09:26 809Memcache安装 服务器端下载地址:http:// ... -
memcache_engine + memcachedb = 高性能分布式内存数据库
2009-12-16 09:35 1093memcachedb是一个由新浪网的开发人员开放出来的开源项目 ... -
一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
2009-12-16 13:10 1552页面代码: <html> <!-- ... -
jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
2009-12-16 13:26 874这很常用,搜索了一下博客园的“找找看”和谷歌,看到大部分都是 ... -
event.keyCode列表
2009-12-16 15:31 1311Keycode对照表 字母和数字键的键码值(keyCo ... -
sql 求差值
2009-12-17 13:15 1167有一组数据,这组数据是不断增加的,想求每小时的差值,规则是:本 ... -
限制文本框只能输入两位数字_我 里面有吗?
2009-12-18 13:44 1126function isTriDecimal(value){ ... -
Resharper进阶一
2009-12-18 15:12 1126Resharper进阶一:简要介绍 面对这样一个问题:为什 ... -
文本框 价格 保留两位小数 讨论
2009-12-21 21:35 1092不知道大家是怎么实现的? 1,用js控制的话,在firefox ...
相关推荐
【SQL课程设计——学生成绩管理系统】 在信息技术领域,数据库管理是至关重要的组成部分,而SQL(Structured Query Language)则是管理关系型数据库的标准语言。在这个“SQL课程设计”中,我们聚焦于一个具体的应用...
四、成绩查询 查询功能允许用户按不同条件查找成绩,如按学生姓名、学号、班级或科目。在VB界面上,可以设置各种查询条件的输入框和下拉列表,配合查询按钮触发SQL的SELECT语句。查询结果通常以表格形式展示,方便...
**题目:** 查询课程编号为“3-105”的学生中成绩超过“3-245”课程的最高成绩的学生学号(sno)、姓名(sname)和成绩(degree),同时列出比最高成绩低的差值。 **SQL语句:** ```sql WITH max_score AS (SELECT MAX...
4. 成绩查询:按学生、课程、学期等多种条件进行成绩查询,满足不同需求。 5. 成绩统计:生成各类统计报表,如平均分、最高分、最低分、及格率等,帮助教学评估。 6. 权限管理:设定不同角色(如管理员、教师、学生...
sql语句 查询同表中学生评价成绩大于80 的人
【SQL学生成绩查询系统】是一个基础的网页应用,主要用于教育机构或个人学习环境中,方便学生、教师或管理员快速查询学生的成绩。系统的核心是数据库管理,通过SQL(结构化查询语言)来操作和检索数据。这里,我们...
【Java + SQLServer 学生成绩管理系统】 在IT领域,构建一个学生成绩管理系统是常见的实践项目,尤其对于初学者来说,它可以帮助理解和掌握数据库管理、后端编程以及用户界面设计的基本概念。在这个"java+SQLServer...
《ASP+SQL构建新生入学查询与学生档案成绩管理系统详解》 在信息技术日益发达的今天,教育领域的信息化管理已经成为提升教学效率、优化教育资源分配的重要手段。本文将深入探讨一个基于ASP和SQL技术构建的新生入学...
### 题目23: 查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。 ```sql SELECT Sno, Grade FROM SC WHERE Cno = '3' ORDER BY Grade DESC; ``` - **解释**: 此查询筛选出选修了课程号为`3`的学生...
3. **成绩查询**:系统应允许教师、学生和家长根据学号、姓名、课程等条件查询成绩,VB可以通过SQL查询语句与数据库进行交互,返回查询结果。 4. **成绩统计分析**:系统能进行成绩统计,如平均分、最高分、最低分...
### SQL问题一:查询每位学生及其前一位学生的成绩 #### 题目描述: 假设我们有一个表`ѧɼֶ`,该表记录了学生的学号以及成绩。表中的数据如下所示: | 学号 | 成绩 | |------|------| | 1 | 199 | | 2 | 198 | |...
"学生成绩查询系统sql2005"是一款基于Visual Basic (VB) 开发的软件,结合了SQL Server 2005数据库技术,旨在提供一个高效、便捷的成绩查询平台。该系统的主要功能是帮助教育机构管理和查询学生的学术成绩,简化了...
面试题目:使用java代码实现类似sql语句的分组去重,求平均值,按照平均值从低到高进行输出。
3. 成绩查询模块:按学生、课程或时间段筛选成绩,展示查询结果。 4. 成绩修改模块:允许教师对错误或过时的成绩进行修正。 5. 成绩统计模块:计算平均分、最高分、最低分,进行排名等统计分析。 6. 数据备份与恢复...
--3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩 --4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩 --4.1、查询在sc表存在成绩的学生信息的SQL语句。 --4.2、查询在sc表中不...
4. **成绩查询**:按学生、课程、学期等多种条件查询成绩,展示详细的个人成绩单。 5. **统计分析**:生成班级平均分、最高分、最低分等统计数据,可以进行排名,分析不及格率,为教学改进提供参考。 6. **报表导出*...
- **成绩查询**:提供多维度的成绩查询功能,如按学号、课程号等查询。 - **成绩统计**:支持按班级、年级进行成绩统计分析。 - **用户管理**:实现不同用户角色的权限控制,确保数据安全。 #### 六、关键技术 - *...
- 成绩查询:根据学生、课程、学期等条件查询历史成绩。 - 统计分析:计算平均分、排名、及格率等统计指标,为教学评估提供依据。 - 报表打印:生成成绩单、班级成绩分布图等,便于教学管理和家长沟通。 总结...
使用这个数据库,学生可以查询个人的成绩和选课情况,教师可以查看全班或个别学生的成绩,管理员则可以统计分析整个学院或学校的数据,比如平均分、及格率、最高分和最低分等。 在实际应用中,我们可以通过SQL ...
SQL学生成绩查询 本资源主要介绍了如何使用SQL语句对数据库进行操作,包括创建数据库、添加数据、修改数据和删除数据等基本操作。同时,也介绍了如何使用SQL语言来建立数据库和录入数据。 知识点1:创建数据库 在...