Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Выборка с учетом фактора случайности / 8 сообщений из 8, страница 1 из 1
15.10.2006, 13:15
    #34055601
Negator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
Здравствуйте! Посоветуйте пожалуйста как реализовать такое:

prty|value
1|10
1|7
2|45
2|36
2|89
3|5
4|35
4|76

Нужно из данной таблицы сделать выборку таким образом, чтобы из набора строк с одинаковым prty была выбрана одна - случайная. Т.е. например мы можем получить

1|10
2|36
3|5
4|35

или

1|1
2|89
3|5
4|76

Спасибо!
...
Рейтинг: 0 / 0
16.10.2006, 07:29
    #34056044
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
Никак, пока как минимум не будет озвучено, для какой СУБД (имя, номер версии).
--
www.rusug.ru - портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
16.10.2006, 12:53
    #34056839
Negator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
Хмм, вообще ASA 7,

но в первую очередь интересует сам подход к решению такой задачи. Т.е. чем переносимее решение окажется тем лучше.
...
Рейтинг: 0 / 0
16.10.2006, 18:22
    #34058242
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
Код: plaintext
select distinct prty, (select first value from t as t2 where t1.prty = t2.prty order by rand()) from t as t1 order by prty
Примерно так. Но лучше все же подумать еще раз и убрать требование случайности.

---
http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
22.10.2006, 12:26
    #34072346
Negator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
Не получится так к сожалению :-(

ORDER BY не работает в подзапросах. Есть какие-нибудь другие варианты?
...
Рейтинг: 0 / 0
22.10.2006, 12:36
    #34072358
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
Ну тогда сделайте в лоб в ХП. Заносите данные во временную таблицу с полем типа autoincrement и выбирайте из нее значение с ключем инициализированным rand. Заодно появится реализовать любой закон распределения.
...
Рейтинг: 0 / 0
22.10.2006, 18:25
    #34072555
Negator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
К сожалению сама суть задачки в том, чтобы сделать ее одним запросом. Неужели нереально?

Я попробовал так:

SELECT
DISTINCT prty,
(
SELECT value FROM t WHERE RAND(main.prty * DATEPART(second, getdate())) =
(SELECT MAX(RAND(prty * DATEPART(second, getdate()))) FROM t WHERE prty = main.prty)
)
FROM
t main
ORDER BY prty;

Жуткая конструкция, но к сожалению и она не прокатила - при большой размерности оказалось что дата может "уйти" и тогда вообще ничего не выберется.

Не могу никак придумать как бы еще ловко так инициализировать RAND внутри запроса, чтобы число-зерно было
...
Рейтинг: 0 / 0
23.10.2006, 11:06
    #34073232
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка с учетом фактора случайности
Negator wrote:

> К сожалению сама суть задачки в том, чтобы сделать ее одним запросом.
> Неужели нереально?

А зачем? Некоторые вещи очень неудобно запихивать в один запрос.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Выборка с учетом фактора случайности / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]