Я не знаю, понял ли я, что вы хотите, но если вы хотите разделить набор данных на 3 группы и найти диапазоны для каждой группы, я думаю, что приведенное ниже поможет при использовании NTILE.
Сначала ядобавит данные в таблицу памяти для проверки, как показано ниже: -
declare @dataSet table ([value] int)
insert into @dataSet values
(1669 ),(2653 ),(2662 ),(2669 ),(2701 ),(2711 ),(2748 ),(2770 ),(2821 ),(2832 ),(2848 ),(2850 ),(2855 ),
(2859 ),(2868 ),(2893 ),(2908 ),(2922 ),(2939 ),(2968 ),(2992 ),(3005 ),(3025 ),(3026 ),(3031 ),(3033 ),
(3034 ),(3036 ),(3053 ),(3073 ),(3087 ),(3087 ),(3099 ),(3128 ),(3128 ),(3131 ),(3133 ),(3140 ),(3174 ),
(3182 ),(3182 ),(3189 ),(3204 ),(3204 ),(3214 ),(3219 ),(3224 ),(3225 ),(3236 ),(3244 ),(3272 ),(3295 ),
(3295 ),(3296 ),(3299 ),(3305 ),(3305 ),(3402 )
Затем попытается получить диапазоны.
;with cte as (
select NTILE(3) over (order by [value]) [group],[value] from @dataSet
)
select [group],min([value]) [LowerRange],max([value]) [HigherRange] From cte group by [group]
Группировка должна получить верхнюю инижний диапазон для каждой группы
Результат будет таким, как показано ниже: -
group LowerRange HigherRange
===== ========== ==========
1 1669 2968
2 2992 3174
3 3182 3402
надеюсь, это поможет.