Как написать базовую функцию SQL для сопоставления значений с максимальным и минимальным диапазоном значений? - PullRequest
0 голосов
/ 01 ноября 2018

Если у меня есть набор данных, подобный следующему:

   type| min  | max
    -----------------
     a | 25   | 30
     b | 20   | 30
     c | 15   | 20

Моя цель - сопоставить входные данные с типом и сделать это, учитывая, что у моих типов есть перекрывающиеся значения.

Итак, допустим, у меня есть вход в моей системе, который равен 25, и я хочу сопоставить свой вход с типом (a, b или c). Мой ввод, скорее всего, b, так как среднее значение min и max для b равно 25, и, возможно, может быть a, но это менее вероятно. Я пытался реализовать это, но мне не повезло, и я тоже думал об использовании p-значений, но не уверен, как мне это сделать.

Как лучше всего это реализовать?

1 Ответ

0 голосов
/ 01 ноября 2018

Примерно так подходит вашему описанию:

select t.*
from t
where ? >= min and ? <= max
order by abs( ? - (max - min) / 2 )
fetch first 1 row only;

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

...