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

Откуда:
Сообщений: 296
Прикрепил картинку с примером таблицы. Нужно для каждого Pr взять наименьший Rn. Rn повторяться не должен
14 июл 16, 12:17    [19408485]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
sergei64_89
Member

Откуда:
Сообщений: 296
файл почему-то не отобразился.
UserId Rn Pr
3 1 1
3 2 1
1 2 2
2 2 3
3 3 1
1 3 2
2 3 3
1 4 2
2 5 3
2 6 3
4 7 4
14 июл 16, 12:27    [19408547]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
правильный прохоодящий.
Guest
sergei64_89,
ну, если нужно, то пусть тот, кому нужно, и берёт что нужно. А форум тут при чём?

ps: да и картинки что-то не видать.
pps: а за пивком не сбегать?
14 июл 16, 12:28    [19408548]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5115
sergei64_89,

версия сервера какая?
14 июл 16, 12:29    [19408556]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
sergei64_89,

row_numer() over (partition by ...., order by...) Rnum
...
where Rnum = 1
?
14 июл 16, 12:29    [19408560]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
sergei64_89
Member

Откуда:
Сообщений: 296
2008 версия, уточнение: Нужно для каждого Pr(по возрастанию) взять наименьший Rn, то есть сначала для Pr=1 выбираем Rn,потом для Pr=2 выбираем из оставшихся. Ранжирование пробовал,пока ничего не придумал...
14 июл 16, 12:33    [19408580]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
o-o
Guest
sergei64_89
2008 версия, уточнение: Нужно для каждого Pr(по возрастанию) взять наименьший Rn, то есть сначала для Pr=1 выбираем Rn,потом для Pr=2 выбираем из оставшихся

а что делать, если "оставшихся" нет?
вот такое если:
(3, 1, 1),
(3, 2, 1),
(1, 1, 2),
(2, 2, 3),
(3, 2, 4)

Pr = 1 -> Rn = 1
для Pr = 2 1 уже занято, а других нет.
Pr = 3 -> Rn = 2
а для Pr = 4 снова 1,2 -- заняты
14 июл 16, 12:45    [19408647]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
sergei64_89
Member

Откуда:
Сообщений: 296
"оставшихся нет" значит null
14 июл 16, 12:52    [19408698]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5115
sergei64_89
уточнение: Нужно для каждого Pr(по возрастанию) взять наименьший Rn, то есть сначала для Pr=1 выбираем Rn,потом для Pr=2 выбираем из оставшихся.
оставщихся чего и где? (из минимумов Rn, из всех значений Rn, внутри группы Pr, по всей таблице)
14 июл 16, 13:11    [19408826]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
sergei64_89
Member

Откуда:
Сообщений: 296
из оставшихся Rn.
14 июл 16, 13:19    [19408893]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
o-o
Guest
Дедушка
sergei64_89
уточнение: Нужно для каждого Pr(по возрастанию) взять наименьший Rn, то есть сначала для Pr=1 выбираем Rn,потом для Pr=2 выбираем из оставшихся.
оставщихся чего и где? (из минимумов Rn, из всех значений Rn, внутри группы Pr, по всей таблице)

из оставшихся, т.е. из невыбранных на предыдущем шаге.
он идет построчно в порядке возрастания Pr и выбирает min(Rn) внутри группы,
определяемой Pr.
выбранные до этого в качестве min Rn в конкурсе более не участвуют.
-----
это явный курсор
14 июл 16, 13:24    [19408919]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
sergei64_89
Member

Откуда:
Сообщений: 296
да вот курсор очень не хотелось бы
14 июл 16, 13:27    [19408938]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
Добрый Э - Эх
Guest
sergei64_89,

и какой же результат должен быть на твоих собственных тестовых данных?
15 июл 16, 05:40    [19412037]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
982183
Member

Откуда: VL
Сообщений: 3386
sergei64_89
Прикрепил картинку с примером таблицы. Нужно для каждого Pr взять наименьший Rn. Rn повторяться не должен

Ну сгруппируешь ты по Pr
Ну возьмешь наименьший Rn.
А дальше?
Группируем ты по Rn.
А Pr выбрать какой?
Первый/минимальный или другой какой?
15 июл 16, 05:59    [19412045]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
982183
Member

Откуда: VL
Сообщений: 3386
А что делать с UserId?
Забыть?
15 июл 16, 06:01    [19412046]     Ответить | Цитировать Сообщить модератору
 Re: запрос  [new]
982183
Member

Откуда: VL
Сообщений: 3386
увидел "уточнение"
Понял.
15 июл 16, 06:11    [19412054]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить