Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разделить людей на карликов, нормальных и великанов.  [new]
Wisky
Member

Откуда: Москва
Сообщений: 163
Совершенно случайно сформировалась задачка (цветовая градация результата).
Надо разделить таблицу на три части согласно одного числового значения (рост), с условием наивысшей близости к делению на три РАВНЫХ части.

Формирование тестовых данных

WITH CTE 
AS (SELECT 1 ID, round(4*RAND(
                        checkSUM(NEWID())
                        )
                        ,0) W
    UNION ALL
    SELECT ID+1,round(4*RAND(
                        checkSUM(NEWID())
                        )
                        ,0) W from CTE 
    where ID<10) ---кол-во человек

select ID,100+W,row_number()over(order by W,ID) C,NTILE(3) OVER(ORDER BY W) AS NT
from CTE 
order by W 



N.B. C одинаковым ростом должны быть в одной группе
22 янв 15, 16:20    [17155349]     Ответить | Цитировать Сообщить модератору
 Re: Разделить людей на карликов, нормальных и великанов.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Wisky
Надо разделить таблицу на три части согласно одного числового значения (рост), с условием наивысшей близости к делению на три РАВНЫХ части.

А как можно поделить на равные части, если тех или иных людей может быть неравное число ?
22 янв 15, 16:24    [17155386]     Ответить | Цитировать Сообщить модератору
 Re: Разделить людей на карликов, нормальных и великанов.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8577
Wisky,

как оценить равенство частей?
22 янв 15, 17:19    [17155763]     Ответить | Цитировать Сообщить модератору
 Re: Разделить людей на карликов, нормальных и великанов.  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
Wisky
Надо разделить таблицу на три части согласно одного числового значения (рост), с условием наивысшей близости к делению на три РАВНЫХ части.
N.B. C одинаковым ростом должны быть в одной группе

ок, в таблице 100 человек ростом полтора метра, 5 человек ростом 1.80 и 1 человек ростом 2.00, какой будет результат?
22 янв 15, 17:40    [17155895]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить