Группировка чисел в аналогичном диапазоне - PullRequest
1 голос
/ 10 ноября 2011

У меня есть эти записи

   id| num
   1 | 2.21231
   2 | 2.21234
   3 | 2.21228
   4 | 3.452
   5 | 3.45205
   6 | 3.45195

Я бы хотел сгруппировать выбранные элементы, где разница составляет .00005 или меньше, поэтому в этом случае 1 & 2, 1 & 3, 4 & 5,4 и 6 ИЛИ, если это невозможно (1,2,3) и (3,4,5) Возможно ли это только с помощью mysql?

РЕДАКТИРОВАТЬ Исключенные возможности

  • ROUND: ложный отрицательный 0.00004 и 0.00005
  • TRUNCATE, FLOOR и CEIL: ложный положительный 0.00001 и 0.00009 ложный отрицательный 0.00009и 0.0011

Ответы [ 2 ]

3 голосов
/ 19 ноября 2011

Ты имеешь в виду, как это? :

SELECT t1.id,
       t2.id
  FROM the_table t1
  JOIN the_table t2
    ON t1.id < t2.id
   AND ABS(t1.num - t2.num) <= .00005
;
1 голос
/ 10 ноября 2011

Вы можете использовать группирование с помощью функции TRUNCATE , например:

select ..... group by TRUNCATE(num, 4);
...