有一个数据表,数据如下:
现在需要查询分数相差5分以内的数据。以下是我的实现思路:
1.算出每个人分数对应的区间段
2.原表跟分数区间联合查询
3.去掉表中的重复数据
SQL如下:
select * from 姓名分数 where 姓名 in (
select b.姓名 from 姓名分数 b ,
(select a.分数-5 as 下限 , a.分数+5 as 上限 from 姓名分数 a) c
where b.分数>=c.下限 and b.分数<=c.上限
group by 姓名 having count(1)>1);