| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2354 人关注过本帖
标题:关系代数求最小成绩
只看楼主 加入收藏
lx996263830
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-3-6
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
关系代数求最小成绩
r(R)=(sNo,sName,score),sNo为主码,用关系代数求最小成绩
2017-03-06 10:45
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:10 
不知道这个公式是怎么样的。但在 SQL Server 中,求最小数,是可以的。如下:
假设:数据表结构是:stu(sNo varchar(10),sName varchar(20),nScore numeric(5,2))
-- 以下语句在 SQL2000 中测试通过
-- 如果临时表 #stu 存在,就删除临时表 #stu
if object_id('tempdb..#stu') is not null drop table #stu
-- 建立临时表 #stu ,测试数据
create table #stu(sNo varchar(10),sName varchar(20),nScore numeric(5,2))
-- 往临时表插入测试数据
insert into #stu(sNo,sName,nScore)
select 's10001','张三',85.50 union all
select 's10002','李四',85.50 union all
select 's10001','张三',75.00 union all
select 's10002','李四',95.00 union all
select 's10002','李四',65.50 union all
select 's10001','张三',55.00

-- 求每个人的最低分,如果同1个人的 sName 相同时,sNo也相同的话
select sNo,sName,min(nScore) as MinScore from #stu
group by sNo,sName

-- 求每个人的最高分,如果同1个人的 sName 相同时,sNo也相同的话
select sNo,sName,max(nScore) as MaxScore from #stu
group by sNo,sName
图片附件: 游客没有浏览图片的权限,请 登录注册


-- 如果同1个人的 sName 相同时,但sNo 不相同时,则用下面的数据测试
if object_id('tempdb..#stu1') is not null drop table #stu1
-- 建立临时表 #stu ,测试数据
create table #stu1(sNo varchar(10),sName varchar(20),nScore numeric(5,2))
-- 往临时表插入测试数据
insert into #stu1(sNo,sName,nScore)
select 's10001','张三',85.50 union all
select 's10003','李四',85.50 union all
select 's10004','张三',75.00 union all
select 's10005','李四',95.00 union all
select 's10006','李四',65.50 union all
select 's10007','张三',55.00

-- 求最小值,
select s2.sNo,s1.sName,s1.MinScore from (select sName,min(nScore) as MinScore from #stu1 group by sName)s1
left join (select * from #stu1)s2
on s1.sName=s2.sName and s1.MinScore=s2.nScore

-- 求最大值,
select s2.sNo,s1.sName,s1.MaxScore from (select sName,Max(nScore) as MaxScore from #stu1 group by sName)s1
left join (select * from #stu1)s2
on s1.sName=s2.sName and s1.MaxScore=s2.nScore
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-03-06 16:41
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
同人不同sNo,优化后
-- 如果同1个人的 sName 相同时,但sNo 不相同时,则用下面的数据测试

if object_id('tempdb..#stu1') is not null drop table #stu1
-- 建立临时表 #stu ,测试数据
create table #stu1(sNo varchar(10),sName varchar(20),nScore numeric(5,2))
-- 往临时表插入测试数据
insert into #stu1(sNo,sName,nScore)
select 's10001','张三',85.50 union all
select 's10003','李四',85.50 union all
select 's10004','张三',75.00 union all
select 's10005','李四',95.00 union all
select 's10006','李四',65.50 union all
select 's10007','张三',55.00

-- 求最小值,
select s2.sNo,s1.sName,s1.MinScore from (select sName,min(nScore) as MinScore from #stu1 group by sName)s1
left join #stu1 s2
on s1.sName=s2.sName and s1.MinScore=s2.nScore

-- 求最大值,
select s2.sNo,s1.sName,s1.MaxScore from (select sName,Max(nScore) as MaxScore from #stu1 group by sName)s1
left join #stu1 s2
on s1.sName=s2.sName and s1.MaxScore=s2.nScore
2017-03-06 16:46
快速回复:关系代数求最小成绩
数据加载中...
 
   



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

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