|
Вероятностный вывод товаров по приоритетам
|
|||
---|---|---|---|
#18+
Всем здоровья!) Есть товары с приоритетами, структура таблицы такая: авторid | product_id | priority __|__________|_______ 1 | 354 | 12 2 | 457 | 9 3 | 789 | 9 4 | 690 | 1 5 | 101 | 1 6 | 120 | 1 Причем товары более приоритетные не в 100% случаев будут идти в списке первыми. Т.е. товар 354 с приоритетом 12 , должен преимущественно выходит в списке первым, но изредка (например в 1 из 6 случаев) должен пропускать вперед товары с более низким приоритетом 9 и т.д. Помогите придумать sql запрос чтобы получать список с вероятностной сортировкой. Я попробовал сделать сортировку на основе вычисляемого приоритета. Т.е. приоритет товара делится на секунды из текущего времени и округляю то целого. Не делю только приоритеты равные 1, чтобы не плодить вычисляемые приоритеты равные 0 . авторSELECT DISTINCT *, CAST( if(pp.priority > 1, pp.priority / MOD(SECOND(NOW()) ,10), 1) as INT) as mod_priority FROM products_priority pp ORDER BY mod_priority DESC, RAND() LIMIT 20 В итоге товар с наибольшим приоритетом все равно первый. Как лучше реализовать в sql>? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 14:32 |
|
Вероятностный вывод товаров по приоритетам
|
|||
---|---|---|---|
#18+
cu2netzov4n Помогите придумать sql запрос чтобы получать список с вероятностной сортировкой. Круто Код: sql 1.
Более мягко Код: sql 1.
Ещё мягче Код: sql 1.
(а также LOG2 и LOG10). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 14:45 |
|
|
start [/forum/topic.php?fid=47&fpage=24&tid=1828707]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 147ms |
0 / 0 |