SQL查询 - 按近似值分组

时间:2011-08-07 13:51:25

标签: sql database request

我有一个查询:SELECT ID,Name,Distance FROM Station GROUP BY'Distance approximation'

在我的例子中,距离是一个双倍,我想将具有相同近似距离的所有元素组合在一起。例如,距离为212的element_1将与element_2位于同一组中,距离为240,但与300不在同一组中(差异大于50)。

由于

2 个答案:

答案 0 :(得分:0)

一种方法是将距离除以50,使其成为整数,然后按该结果分组。

这样的事情:(未经测试)

  SELECT floor(Distance/50) as [group], count(*) as count
  FROM Station 
  GROUP BY floor(Distance/50)

这种方式的一个缺点是两个彼此接近的数字仍然可以在不同的组中。例如,249的距离与251不同。

由于任何此类分组都需要一些边界点,因此您需要明确自己的要求 - 然后可以设计算法。

答案 1 :(得分:0)

根据您的数据库,您可以按功能进行分组。

所以你可以做(​​非常简单)

之类的事情
select round(distance/50) as approximate_distance, count(*)
   from station
   group by round(distance/50)

您可以根据自己的要求添加自己的功能。