Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
Добрый день, Всем! Пилю поисковик букмекерских вилок. Столкнулся с такой интересной задачей, которую возможно средствами SQL и не решить. Есть таблица коэффициентов от различных букмекерских контор. Выглядит примерно так: Тип рынка (к примеру - П1П2 - т.е. возможный исход матча - только победа одного из игроков(например - теннис). Или П1XП2 - здесь еще возможна ничья. Например - футбол) Тип коэффициента (на победу, или ничью) ID соперника ID события (матча) Предположим, что в этой таблице записаны коэффициенты на один и тот же футбольный матч 3-х контор: Контора | Соперник | Тип коэффициента | Тип рынка | Коэффициент 1 БК1 | Соперник 1 | Победа | П1XП2 | 1,5 2 БК1 | Соперник 1 | Ничья | П1XП2 | 3 3 БК1 | Соперник 2 | Победа | П1XП2 | 5 4 БК1 | Соперник 2 | Ничья | П1XП2 | 3 5 БК2 | Соперник 1 | Победа | П1XП2 | 1,6 6 БК2 | Соперник 1 | Ничья | П1XП2 | 2,9 7 БК2 | Соперник 2 | Победа | П1XП2 | 7 8 БК2 | Соперник 2 | Ничья | П1XП2 |2,9 9 БК2 | Соперник 1 | Победа | П1XП2 | 1,7 10 БК2 | Соперник 1 | Ничья | П1XП2 | 2,8 11 БК2 | Соперник 2 | Победа | П1XП2 |7,1 12 БК2 | Соперник 2 | Ничья | П1XП2 |2,8 (Ничья для каждой конторы хранится 2 раза - один раз для одного соперника, второй раз для другого) И вот вопрос: можно ли как то средствами SQL показать все возможные "вилочные" комбинации? Т.е. в результате SQL запроса я бы хотел увидеть вот такую таблицу: 1 Комбинация 1 | БК1 | Соперник 1| Победа | 1,5 2 Комбинация 1 | БК1 | Соперник 1| Ничья | 3 3 Комбинация 1 | БК2 | Соперник 2| Победа | 7 4 Комбинация 2 | БК2 | Соперник 1| Победа | 1,6 5 Комбинация 2 | БК2 | Соперник 1| Ничья | 2,9 6 Комбинация 2 | БК1 | Соперник 2| Победа | 5 7 Комбинация 3 | БК1 | Соперник 1| Победа | 1,5 8 Комбинация 3 | БК2 | Соперник 1| Ничья | 2,9 9 Комбинация 3 | БК1 | Соперник 2| Победа | 5 Т.е. "Комбинация" - это комбинация коэффициентов различных контор на все возможные исходы матча. Такой результат я смог бы сгруппировать по полю "комбинация", и применить различные группировочные функции к коэффициентам. У меня загружается все в программу, там составляются все комбинации и делается вся работа с помощью массивов. Я хочу упростить конструкцию программы - может все можно сделать SQL - запросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 12:16 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
Да как бы не вижу проблемы... осталось только понять принцип, по которому из именно этих исходных получен именно этот результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 12:36 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
AkinaДа как бы не вижу проблемы... осталось только понять принцип, по которому из именно этих исходных получен именно этот результат. Принцип простой: Мы можем поставить на победу соперника 1 и на ничью в конторе БК1, а на победу соперника 2 в конторе БК2. Тем самым мы перекроем все возможные исходы матча. Это будем, к примеру, "комбинация 1". И не зависимо от исхода матча при определенных соотношениях коэффициентов и сумм ставок мы получим маленькую - но прибыль. Это и есть "букмекерская вилка". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 12:44 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
У видел что в первой таблице из первого поста - ошибка: с 9-12 записи относятся к БК3, а не к БК2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 13:27 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
forkliveПринцип простой: Мы можем поставить на победу соперника 1 и на ничью в конторе БК1, а на победу соперника 2 в конторе БК2. Тем самым мы перекроем все возможные исходы матча. Это будем, к примеру, "комбинация 1". Пока звучит малопонятно. Какой смысл составлять комбинации? нет, я бы понял, если бы составлялись ВСЕ возможные (4 для П1П2 при 2 конторах, 8 при трёх, и т.п., и соответственно 9, 27, ... - для П1XП2), но почему из всех возможных тебе нужны те показанные три и не нужны остальные? Какой принцип отбора? Ну и главное. Цель-то какая? я понимаю, была бы цель "составить комбинацию так, чтобы для каждого исхода получить наибольший/наименьший из предлагаемых коэффициентов". Или в продвинутом варианте - получить максимальный ожидаемый выигрыш (правда, тут придётся задавать некую вероятность каждого из исходов)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 14:33 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
AkinaПока звучит малопонятно. Какой смысл составлять комбинации? нет, я бы понял, если бы составлялись ВСЕ возможные (4 для П1П2 при 2 конторах, 8 при трёх, и т.п., и соответственно 9, 27, ... - для П1XП2), но почему из всех возможных тебе нужны те показанные три и не нужны остальные? Какой принцип отбора? Мне и нужно составить все возможные комбинации для каждого события. И потом сгруппировать по полю "комбинация", и получить для каждой комбинации процент вилки. AkinaНу и главное. Цель-то какая? я понимаю, была бы цель "составить комбинацию так, чтобы для каждого исхода получить наибольший/наименьший из предлагаемых коэффициентов". Или в продвинутом варианте - получить максимальный ожидаемый выигрыш (правда, тут придётся задавать некую вероятность каждого из исходов)... Смысл найти все прибыльные вилки. Когда я получу вышеописанный результат, с помощью SUM и с помощью деления/сложения/умножения я получу процент прибыльности для каждой комбинации. К примеру - одна из комбинаций получилось такой: БК1 - Соперник 1 - победа : 3,8 (сумма ставки 28) БК1 - Соперник 1 - ничья : 4,5 (сумма ставки 23) БК2 - Соперник 2 - победа : 2,2 (сумма ставки 48) Процент такой вилки = 6% К примеру если мы поставим на это событие суммы, указанные в скобках - то мы получим 6 USD прибыли, независимо от результата матча. Т.е. нужны все комбинации, которые покрывают все возможные исходы матча одного события. Получается что где то к запросе будет kf1.eventId = kf2.eventId ---------------------------------------------------------------------------------------------- Пока мысли такие: какого то универсального запроса для всех видов рынков и всех видов вилок сделать не получится. Вероятнее всего, придется использовать CROSS JOIN Но если для типа рынка П1П2 нужно 2 раза подключить таблицу коэффициентов kf, то для П1XП2 - таблицу коэффициентов нужно подключать уже 3 раза. А для многоисходных вилок - (угадать точный счет) - неоднократно. Т.е. для каждого количества исходов нужен свой запрос. Ну и я протестировал cross join - конечно работает не быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 14:59 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
Ну так это вообще тривиально. Особенно если изменить хранение (например, в представлении), заменив соперника на упорядоченную пару, и соответственно введя вариант "Поражение". Т.е. не Контора Соперник Тип коэффициента Тип рынка КоэффициентБК1 Соперник 1 Победа П1XП2 1.5БК1 Соперник 1 Ничья П1XП2 3БК1 Соперник 2 Победа П1XП2 5 БК1 Соперник 2 Ничья П1XП2 3 а Контора Соперники Тип коэффициента Тип рынка КоэффициентБК1 Соперник 1 - Соперник 2 Победа П1XП2 1.5БК1 Соперник 1 - Соперник 2 Ничья П1XП2 3БК1 Соперник 1 - Соперник 2 Поражение П1XП2 5 Обычное декартово произведение нескольких копий таблицы, если нужны все варианты в одной записи... или скажем выбор по генерируемой маске, если надо каждый вариант в своей записи, как в примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 16:28 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
Akinaили скажем выбор по генерируемой маске, если надо каждый вариант в своей записи, как в примере. Вот здесь не понял: что значит "выбор по генерируемой маске"? И получается - если исходов 2 - то одключаем 2 таблицы, если 3 исхода - 3, и т.д. Т.е. универсальности не получится. Я ведь все правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2017, 20:04 |
|
||
|
Группировка комбинаций
|
|||
|---|---|---|---|
|
#18+
forkliveчто значит "выбор по генерируемой маске"?В источник данных запроса добавляется синтетическая таблица типа Код: sql 1. 2. 3. которая множится на всё остальноке и позволяет раздёргать одну комбинацию Контора-Соперник1-Соперник2 на три записи с разными вариантами исхода. forkliveполучается - если исходов 2 - то одключаем 2 таблицы, если 3 исхода - 3, и т.д. Т.е. универсальности не получится. Ну почему? Таблиц всегда будет три. Просто в каждой таблицы делается пред-отбор по типу исхода, для П1П2 в подтаблице для ничьих будет пусто, а в соотв. полях выходного набора NULL, отсеять которые не составляет труда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 08:09 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39530775&tid=1830370]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 135ms |

| 0 / 0 |
