2013-05-02 5 views
0

Мне нужно написать запрос, чтобы идентифицировать 5 групп разного размера. Я знаю, что могу использовать NTILE разбить мой набор на равные группы размера, но мне нужно что-то вроде этогоSQl Запрос, чтобы разбить результаты на группы определенного размера

Total Records say 1,000,000 

Group 1 100,000 Rows 
Group 2 200,000 Rows 
Group 3 300,000 Rows 
Group 4 400,000 Rows 

Спасибо

+0

Связаны ли эти группы друг с другом каким-либо образом или это просто произвольные суммы, чтобы разделить его? – Aushin

+0

Нет, мне просто нужно разделить их в определенных равных пропорциях. – user1735894

+0

Хотите ли вы сделать больше или меньше групп и изменить разные размеры? –

ответ

2

Ну, использовать row_number() и логику на вершине, что:

select (case when seqnum <= 100000 then 'Group1' 
      when seqnum <= 100000 + 200000 then 'Group2' 
      when seqnum <= 100000 + 200000 + 300000 then 'Group3' 
      when seqnum <= 100000 + 200000 + 300000 + 400000 then 'Group4' 
     end) as GroupName, 
     t.* 
from (select t.*, 
      row_number() over (order by <your criteria>) as seqnum 
     from t 
    ) t 
Смежные вопросы