一个SQL算法问题求助!!!!
各位同行兄弟朋友:
我有一个张表结构:(表名字:census)
字段:
id --记录的号码
x --坐标x的值
y --坐标y值
groupid --该记录所属的类型
现在要写一个存储过程:
CREATE PROCEDURE sp_census3a
@ax1 int,
@ay1 int,
@ax2 int,
@ay2 int
AS
declare @lrectx1 int
declare @lrecty1 int
declare @lrectx2 int
declare @lrecty2 int
set @lrectx1 = @ax1 - @ax2
set @lrectx2 = @ax1 + @ax2
set @lrecty1 = @ay1 - @ay2
set @lrecty2 = @ay1 + @ay2
select x,y,id,groupid
From
(select * from census
where @lrectx1<x and x<@lrectx2 and @lrecty1<y and y<@lrecty2) A
Group By x,y,id,GroupID
order by groupid
以上得出一个结果集,是以groupid来进行分组的。
现在要求:在以上每个分组中,
如果要求,
在每个小组中,找出一行组成新的
结果集,使得该结果集中:
任意2行x,y 列的值(xi,yi),(xj,yj) --xi表示第i行的x列的值,其他一样)
有:square(xi-xj)+square(yi-yj)>@const
其中@const为一个常数
这个要求一样在存储过程里实现,如何实现?