表二中的“录取人数”一个是"2",一个是"5",到后面的结果当中的“录取人数”却是一个"5",一个"6"……
Sorry,偶今天身体状况不佳.
Sorry,偶今天身体状况不佳.
解决方案 »
- sql查询 (1004,1007)什么意思?
- 示例数据库AdventureWorks
- 求一条SQL语句的写法,高分在线等
- 我们公司在北京和香港有分公司,两个公司数据库的数据怎样才能同步阿。。。
- 分发代理无法在“C:\Program Files (x86)\Microsoft SQL Server\100\COM”目录中创建临时文件。系统返回的错误代码为
- 如何用语句修改一张表的字段名?在线等..........
- Sql Server 数据库中编码问题~~!
- 1、 列举三个以上大型关系数据库,列举常用的SQL语句的语法;
- 数据库的表插入问题?
- 在sql2000个人版中,这样的语句该怎么写:
- 这个问题能不能用一句 SQL 完成????
- 求两sql 语句 : 急切希望邹建\libin_ftsaft(子陌红尘) 等高手帮忙
表1
学号 层次 专业 班级 分数
001 专升本 计算机 A 160
002 专升本 计算机 A 190
003 专升本 计算机 A 200
004 专升本 计算机 A 210
005 专升本 计算机 A 220
006 专升本 计算机 A 180
007 专升本 法 学 A 180
008 专升本 法 学 A 190
009 专升本 法 学 A 210
010 专升本 法 学 A 210
011 专升本 法 学 A 210
012 专升本 法 学 A 190
013 专升本 法 学 A 220
014 专升本 法 学 A 230
015 专升本 法 学 A 240
...........................................
表 2
层次 专业 班级 录取人数
专升本 计算机 A 5
专升本 法 学 A 6
根据表2中的相应的层次、专业、班级下的录取人数得到表一中相应的层次、专业、班级下的录取分数
例如:
层次 专业 班级 录取人数 录取分数
专升本 计算机 A 5 180
专升本 法 学 A 6 210
.............................................相应的层次、专业、班级下分数从高到低排序取第(录取人数)记录的分数
例如:
表二中层次为专升本、专业为计算机、班级为 A班的录取人数是5人
相应的从表一中取的录取分数线为180
to duoluohuifeng(堕落回风) select 层次 ,专业, 班级,录取人数,(select max(分数) from 表1 a where b.专业=专业 and b.班级=班级 and (select count(1) from ab where 分数>=a.分数 and a.专业=专业 and a.班级=班级 )>=b.录取人数 ) as 分数线 from 表2 b
这样写可以吗?
group by 班级,层次,专业) a,表2 b
where a.班级=b.班级 and a.层次=b.层次 and a.专业=b.专业
from 表2 b,(select distinct a.层次,a.专业,a.班级,a.分数 as ,sum(case when a.分数>=d.分数 then 1 else 0 end ) as count1 from 表1 a,表2 d where a.层次=d.层次 and a.专业=d.专业 and a.班级=d.班级 group by b.层次,b.专业,b.班级,a.分数 ) c
where b.层次=c.层次 and b.专业=c.专业 and b.班级=c.班级 and b.录取人数=c.count1
表2中是没有分数这个字段的
(select distinct a.层次,a.专业,a.班级,a.分数 as ,sum(case when a.分数>=d.分数 then 1 else 0 end ) as count1 from 表1 a,表2 d where a.层次=d.层次 and a.专业=d.专业 and a.班级=d.班级 group by b.层次,b.专业,b.班级,a.分数 )
(学号 varchar(20),层次 varchar(20),专业 varchar(20),班级 varchar(20),分数 int)
insert into 表1
select '001','专升本','计算机','A',160 [union] all
select '002','专升本','计算机','A',190 [union] all
select '003','专升本','计算机','A',200 [union] all
select '004','专升本','计算机','A',210 [union] all
select '005','专升本','计算机','A',220 [union] all
select '006','专升本','计算机','A',180 [union] all
select '007','专升本','法学','A',180 [union] all
select '008','专升本','法学','A',190 [union] all
select '009','专升本','法学','A',210 [union] all
select '010','专升本','法学','A',210 [union] all
select '011','专升本','法学','A',210 [union] all
select '012','专升本','法学','A',190 [union] all
select '013','专升本','法学','A',220 [union] all
select '014','专升本','法学','A',230 [union] all
select '015','专升本','法学','A',240[create] table 表2
(层次 varchar(20),专业 varchar(20),班级 varchar(20),录取人数 int)
insert into 表2
select '专升本','计算机','A',5 [union] all
select '专升本','法学','A',6 select * from 表2select 层次,专业,班级,count(*) as 录取人数,
min(分数) as 分数
from
(
select * from 表1 a where
(select count(1) from 表1 b where a.专业=b.专业 and a.分数<b.分数)<
(select 录取人数 from 表2 c where c.专业=a.专业)
) b
group by 专业,层次,班级drop table 表2
drop table 表1 层次 专业 班级 录取人数 分数
------------ -------------------- -------------------- ----------- -----------
专升本 法学 A 6 210
专升本 计算机 A 5 180(所影响的行数为 2 行)