用sql求一组数据中的3个和最小的数值
2008-04-24 20:55
453 查看
/**//*
描述:获取一组数据中3个和的绝对值最小的数据
在测试中,输入了有重复值的数据,有重复时,只当作一个数字
原题:N个int数,求其中三个数,使得其和的绝对值最小,如{-3,9,-5,90}的三个数是{-3,9,-5},要求分析时间和空间复杂度。
*/
set nocount on
if exists(select 1 from sys.tables where name = 't')
drop table t
create table t (id int,hi int default 0 )
insert into t(id) select -10
insert into t(id) select -11
insert into t(id) select -9
insert into t(id) select 6
insert into t(id) select 10
insert into t(id) select -10
insert into t(id) select 6
insert into t(id) select -6
insert into t(id) select -10
insert into t(id) select 0
insert into t(id) select -2
insert into t(id) select 15
insert into t(id) select 25
insert into t(id) select -20
insert into t(id) select -5
--输出测试数据
select * from t
order by id
declare @id int,@op_id int,@min_id int
declare cur cursor for select id from t where id>0
declare @temp table(id1 int ,id2 int,id3 int ,hi int)
open cur
fetch next from cur into @id
while (@@fetch_status=0)
begin
select top 1 @op_id =min(abs(@id+id)) from t
select top 1 @min_id=min(abs(@op_id+id)) from t
insert into @temp select @id, @op_id-@id, @min_id-@op_id,@min_id
update t
set hi=@min_id
where id=@id
fetch next from cur into @id
end
--输出需要测试的数据
select * from @temp where hi=(select min(hi) from @temp)
close cur
deallocate cur
相关文章推荐
- [SQL]一组数据中Name列相同值的最大Je与最小je的差
- 关于输入一组数据求最小的问题
- mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
- 通过循环找出一组数据的最大值和最小值的小技巧
- 分治法:求一组数据中最大的两个数和最小的两个数
- 在一组数据中获取最大值,最小值,平均值的js写法
- java 获取一组数据中的最大值和最小值
- sql 如何按时间排序 分组 并且取每组时间最大或最小的一条数据
- PL/SQL 数据类型和变量 -- 数值
- POj1862 求一组数据中经过某个运算后的最小值
- 算法(根据提供的某数值,找出与其最接近的一组数据)
- Excel MODE.MULT函数获取一组数值中出现频率最多的数据
- 最简单的获取一组数据中的最大和最小数
- 百度2014校园招聘算法——给出一组数据A=[a_0, a_1, a-2, ... a_n](其中n可变),打印出该数值元素的所有组合。
- oracle数据库查询日期sql语句(范例)、向已经建好的表格中添加一列属性并向该列添加数值、删除某一列的数据(一整列)
- mysql 如何用一条SQL将一张表里的数据插入到另一张表 3个例子
- 百度2014校园招聘算法——给出一组数据A=[a_0, a_1, a-2, ... a_n](当中n可变),打印出该数值元素的全部组合。
- 179. Largest Number 将一组数据调整成数值最大的整数字符串
- 删除oracle 表中重复数据sql语句、保留rowid最小的一条记录
- 输入k个数值,求其最小的k个数据