SQL-запрос - группировка по приближению - PullRequest
0 голосов
/ 07 августа 2011

У меня есть запрос: ВЫБЕРИТЕ ID, Имя, Расстояние ОТ станции GROUP BY 'Приближенное расстояние'

В моем примере расстояние является двойным, и я хотел бы сгруппировать все элементы с одинаковым приблизительным расстояниемвсе вместе.Например, элемент_1 с расстоянием 212 будет в той же группе, что и элемент_2 с расстоянием 240, но не в той же группе, что и 300 (разница> 50).

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 августа 2011

В зависимости от вашей базы данных, вы можете группировать по функции.

Таким образом, вы можете сделать что-то вроде (очень просто)

select round(distance/50) as approximate_distance, count(*)
   from station
   group by round(distance/50)

Вы можете добавлять свои собственные функции на основе вашеготребования.

0 голосов
/ 07 августа 2011

Один из способов сделать это - разделить расстояние на 50, сделать его целым числом и сгруппировать по этому результату.

Примерно так: (не проверено)

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

Единственный недостаток этого способа состоит в том, что два близких друг к другу числа могут все еще находиться в разных группах. Например, расстояние 249 будет в другой группе, чем 251.

Поскольку любая такая группировка требует определенных граничных точек, вам необходимо четко понимать свои требования - тогда можно разработать алгоритм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...