Моё меню Общее меню Сообщество Правила форума Все прочитано
Вернуться   uForum.uz > ИКТ и телеком > Разное/IT
Сообщения за день Поиск
Знаете ли Вы, что ...
...для каждой темы существует свой раздел. Изучите структуру форума. Если соответствующего раздела нет, то всегда есть раздел "Разное" :)
<< Предыдущий совет - Случайный совет - Следующий совет >>

Разное/IT Всё, что не попадает в другие разделы форума и подфорумов представленных здесь организаций. Не IT темы обсуждаются в "Беседке"


Ответить

 
Опции темы Опции просмотра
Старый 24.10.2013 16:59   #1  
Аватар для Nestik
Оффлайн
ZOG
eminence grise
Сообщений: 2,258
+ 277  835/480
– 353  232/151

UzbekistanОтправить сообщение для Nestik с помощью ICQ
Есть диапазоны
Скрытый текст:

Диапозон1;1;10
Диапазон2;11;20
Диапозон3;21;30


Есть нагенеренные числа внутри диапазонов впринципе по порядку но возможны дырки. что-то вроде этого:
Скрытый текст:
Диапазон1;1
Диапазон1;3
Диапазон1;4
Диапазон1;5
Диапазон1;6
Диапазон1;8
Диапазон1;9
Диапазон2;12
Диапазон2;14
Диапазон2;15
Диапазон2;16
Диапазон2;17
Диапазон2;18
Диапазон2;20
Диапазон3;21
Диапазон3;22
Диапазон3;24
Диапазон3;27
Диапазон3;28
Диапазон3;29
Диапазон3;30



Усть Юзеры которым надо раздать нагенеренные числа в зависимости от принадлежности юзера к диапазону.
Скрытый текст:
Юзер1;Диапозон1
Юзер2;Диапозон1
Юзер3;Диапозон1
Юзер4;Диапозон1
Юзер5;Диапозон2
Юзер6;Диапозон2
Юзер7;Диапозон2
Юзер8;Диапозон2
Юзер9;Диапозон2
Юзер10;Диапозон2
Юзер11;Диапозон3
Юзер12;Диапозон3
Юзер13;Диапозон3
Юзер14;Диапозон3
Юзер15;Диапозон3
Юзер16;Диапозон3


Должно получится следующее:
Скрытый текст:
Юзер1;Диапозон1;1
Юзер2;Диапозон1;3
Юзер3;Диапозон1;4
Юзер4;Диапозон1;5
Юзер5;Диапозон2;12
Юзер6;Диапозон2;14
Юзер7;Диапозон2;15
Юзер8;Диапозон2;16
Юзер9;Диапозон2;17
Юзер10;Диапозон2;18
Юзер11;Диапозон3;21
Юзер12;Диапозон3;22
Юзер13;Диапозон3;24
Юзер14;Диапозон3;27
Юзер15;Диапозон3;28


Дополнительные условия. Только SQL.
Ответить 
Старый 25.10.2013 14:38   #2  
Real ID Group
Аватар для Rooslan Khayrov
Оффлайн
Google
software engineer
AKA:Y combinator
Сообщений: 418
+ 114  374/183
– 6  9/8

Switzerland
Nestik, без оконных функций как-то не получается (постгрес).
Скрытый текст:

Код:
CREATE TABLE ranges (
    id serial PRIMARY KEY,
    start integer NOT NULL,
    stop integer NOT NULL,
    CHECK (start < stop),
    UNIQUE (start, stop));

CREATE TABLE values (
    id serial PRIMARY KEY,
    range_id integer NOT NULL REFERENCES ranges(id),
    value integer UNIQUE NOT NULL);

CREATE TABLE users (
    id serial PRIMARY KEY,
    range_id integer NOT NULL REFERENCES ranges(id));


SELECT u.id, v.value FROM
    (SELECT id, range_id,
            row_number() OVER (PARTITION BY range_id ORDER BY id) AS i
     FROM users) AS u
    LEFT OUTER JOIN
    (SELECT value, range_id,
            row_number() OVER (PARTITION BY range_id ORDER BY value) AS i
     FROM values) AS v
    ON u.range_id = v.range_id AND u.i = v.i;
Ответить 
"+" от:
Старый 25.10.2013 15:10   #3  
Аватар для Nestik
Оффлайн
ZOG
eminence grise
Сообщений: 2,258
+ 277  835/480
– 353  232/151

UzbekistanОтправить сообщение для Nestik с помощью ICQ
Цитата:
Сообщение от Rooslan Khayrov Посмотреть сообщение
Nestik, без оконных функций как-то не получается (постгрес).
Угу мне такое же решение пришло. По другому вроде никак. Аналитика таки вещь.

Последний раз редактировалось Nestik; 25.10.2013 в 15:13.
Ответить 
Старый 27.10.2013 07:00   #4  
Known ID Group uParty Member
Аватар для Dolphin
Оффлайн
Imperium of Man
Inquisitor
Сообщений: 5,990
+ 5,680  4,442/2,033
– 128  137/102

Russian FederationОтправить сообщение для Dolphin с помощью ICQОтправить сообщение для Dolphin с помощью Skype™Facebook
Цитата:
Сообщение от Nestik Посмотреть сообщение
Дополнительные условия. Только SQL.
Ммм... возможно, я не так понял задачу, но я проблемы вообще не вижу:

Код:
SELECT user.id, range.id, value.id 
FROM user 
LEFT JOIN range ON user.rangeid=range.id 
LEFT JOIN value ON range.id=value.rangeid
ORDER BY user.id ASC, range.id ASC, value.id ASC
Ответить 
Старый 27.10.2013 12:34   #5  
Real ID Group
Аватар для Rooslan Khayrov
Оффлайн
Google
software engineer
AKA:Y combinator
Сообщений: 418
+ 114  374/183
– 6  9/8

Switzerland
Dolphin, в результате запроса должно быть столько строк, сколько есть юзеров. А тут получается декартово произведение всех трёх таблиц.
Ответить 
"+" от:
Старый 27.10.2013 21:35   #6  
Known ID Group uParty Member
Аватар для Dolphin
Оффлайн
Imperium of Man
Inquisitor
Сообщений: 5,990
+ 5,680  4,442/2,033
– 128  137/102

Russian FederationОтправить сообщение для Dolphin с помощью ICQОтправить сообщение для Dolphin с помощью Skype™Facebook
Цитата:
Сообщение от Rooslan Khayrov Посмотреть сообщение
Dolphin, в результате запроса должно быть столько строк, сколько есть юзеров. А тут получается декартово произведение всех трёх таблиц.
Т.е. юзер должен получить одно число из своего диапазона? А принцип? Рандомно или числа для всех юзеров должны быть разными? Если второе, то я вижу только вариант с временной таблицей.

Последний раз редактировалось Dolphin; 27.10.2013 в 21:40.
Ответить 
Старый 27.10.2013 21:57   #7  
Real ID Group
Аватар для Rooslan Khayrov
Оффлайн
Google
software engineer
AKA:Y combinator
Сообщений: 418
+ 114  374/183
– 6  9/8

Switzerland
Цитата:
Сообщение от Dolphin Посмотреть сообщение
Рандомно или числа для всех юзеров должны быть разными?
Каждый должен получить своё уникальное значение. Если юзеров в диапазоне больше, чем значений — думаю, дубликаты выдавать нельзя, но пусть Nestik уточнит.
Цитата:
Сообщение от Dolphin Посмотреть сообщение
Если второе, то я вижу только вариант с временной таблицей.
Продемонстрируй, интересно.
Ответить 
Реклама и уведомления
Старый 24.10.2013 17:37   #8  
Аватар для Igor Tsingalov
Оффлайн
AKA:IT
Сообщений: 345
+ 407  99/65
– 90  34/30

UzbekistanОтправить сообщение для Igor Tsingalov с помощью ICQ
Talking

Дак вот как биллинг билайновский работает!!! А я-то никак не мог понять, почему с опозданием трафик начисляется!
Всё, спалил Nestik корпоративные секреты... спалил...
Ответить 
Старый 24.10.2013 19:03   #9  
Аватар для Nestik
Оффлайн
ZOG
eminence grise
Сообщений: 2,258
+ 277  835/480
– 353  232/151

UzbekistanОтправить сообщение для Nestik с помощью ICQ
Эмм соррии за ошибки в "Диапазон". Исходные данные лепил на скорую руку.

Igor Tsingalov, Угу можете пожаловаться в ЕСПЧ. )))
Ответить 
Старый 24.10.2013 21:26   #10  
Аватар для Nestik
Оффлайн
ZOG
eminence grise
Сообщений: 2,258
+ 277  835/480
– 353  232/151

UzbekistanОтправить сообщение для Nestik с помощью ICQ
Нуже Господа поактивнее, у мну только одно решение с помощью аналитики Oracle.
Ответить 
Ответить




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Advertisement System V2.5 By Branden
OOO «Единый интегратор UZINFOCOM»


Новые 24 часа Кто на форуме Новички Поиск Кабинет Все прочитано Вверх