一次使用SQL对考试结果进行统计的小经验
2010-03-28 22:44
555 查看
问题描述如下:
SqlServer中存在三个表:
第一个:单位里边需要考试的人的名单(表A)。比较恶,只有姓名,没有考号。
第二个:需要参加考试名单、考号与科目。(表B)
这个表里边有一些没用的东西,包括已调走的人。其中有些人考一门,有些考两门。
第三张:存放已经参加考试的人的名单和考号。这个表不仅存放有我们单位参加过考试的人的名单,也存放者别的单位参加过考试的人(表C)
我的任务就是从这三张表中找出没有参加考试的人的名单和科目。
人数很多,有几百个。用眼睛数能累死我。。。
我的做法:
第一个Select是找出我们单位里边人与科目的对应。
第二个Select是找出已经已经参加过考试的人的学号姓名和参加过的科目
结果是使用Except语句找出第一个Select结果中存在,第二个Select结果中不存在的人与科目。
这个过程我忙活了一个多小时。因为不知道Except语句。。。。。。。
写出来希望对大家有帮助。Except语句详细地用法,可以参考SqlServer联机丛书
SqlServer中存在三个表:
第一个:单位里边需要考试的人的名单(表A)。比较恶,只有姓名,没有考号。
第二个:需要参加考试名单、考号与科目。(表B)
这个表里边有一些没用的东西,包括已调走的人。其中有些人考一门,有些考两门。
第三张:存放已经参加考试的人的名单和考号。这个表不仅存放有我们单位参加过考试的人的名单,也存放者别的单位参加过考试的人(表C)
我的任务就是从这三张表中找出没有参加考试的人的名单和科目。
人数很多,有几百个。用眼睛数能累死我。。。
我的做法:
Select B.考号, A.姓名,B.科目 from A join B ON A.姓名 = B.姓名 Except Select C.考号,C.姓名,C.科目 from C
第一个Select是找出我们单位里边人与科目的对应。
第二个Select是找出已经已经参加过考试的人的学号姓名和参加过的科目
结果是使用Except语句找出第一个Select结果中存在,第二个Select结果中不存在的人与科目。
这个过程我忙活了一个多小时。因为不知道Except语句。。。。。。。
写出来希望对大家有帮助。Except语句详细地用法,可以参考SqlServer联机丛书
相关文章推荐
- 演示使用sql_trace和10046事件对其他会话进行跟踪,并给出trace结果
- 数据库-使用查询到的不同字段的两条SQL的结果进行筛选查询
- 使用PDO进行sql的预处理和操作结果集
- elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg
- SQL:将统计出来的结果进行名次排序
- Spark 实战,第 3 部分: 使用 Spark SQL 对结构化数据进行统计分析
- Spark 实战,第 3 部分: 使用 Spark SQL 对结构化数据进行统计分析
- 基因数据处理17之使用scala对BWA运行结果进行各阶段程序时间提取和统计求和
- 在Windows Embedded CE下进行Native C++开发,一次错误使用多线程的经验教训
- 使用SQL进行IIS日志中的访问记录统计
- [Oracle SQL] 使用rollup分组统计按统计结果分组排序显示的问题
- 【SQL*Plus】使用BREAK和COMPUTE在SQL*Plus中得到分组统计结果
- 如何将多个SQL查询统计结果一次显示出来
- 使用 wordcloud, jieba, PIL, matplotlib, numpy 进行分词,统计词频,并绘制词云的一次尝试
- Excel 中使用SQL 语句查询数据(八)-----用Group by 进行分组统计
- OCP认证考试指南(10):使用PL/SQL进行Oracle编程
- 使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集
- 一个hive小案例:使用HIVE进行单词统计, 并把结果存入mysql
- P-1.2 模拟使用某种策略进行抛硬币赌博的结果
- MySQL DELETE SQL使用经验