powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка комбинаций
10 сообщений из 10, страница 1 из 1
Группировка комбинаций
    #39530680
forklive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, Всем!
Пилю поисковик букмекерских вилок.

Столкнулся с такой интересной задачей, которую возможно средствами 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 - запросом?
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39530696
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да как бы не вижу проблемы... осталось только понять принцип, по которому из именно этих исходных получен именно этот результат.
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39530702
forklive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaДа как бы не вижу проблемы... осталось только понять принцип, по которому из именно этих исходных получен именно этот результат.

Принцип простой: Мы можем поставить на победу соперника 1 и на ничью в конторе БК1, а на победу соперника 2 в конторе БК2.
Тем самым мы перекроем все возможные исходы матча. Это будем, к примеру, "комбинация 1".
И не зависимо от исхода матча при определенных соотношениях коэффициентов и сумм ставок мы получим маленькую - но прибыль.
Это и есть "букмекерская вилка".
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39530731
forklive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У видел что в первой таблице из первого поста - ошибка: с 9-12 записи относятся к БК3, а не к БК2
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39530775
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forkliveПринцип простой: Мы можем поставить на победу соперника 1 и на ничью в конторе БК1, а на победу соперника 2 в конторе БК2.
Тем самым мы перекроем все возможные исходы матча. Это будем, к примеру, "комбинация 1".
Пока звучит малопонятно. Какой смысл составлять комбинации? нет, я бы понял, если бы составлялись ВСЕ возможные (4 для П1П2 при 2 конторах, 8 при трёх, и т.п., и соответственно 9, 27, ... - для П1XП2), но почему из всех возможных тебе нужны те показанные три и не нужны остальные? Какой принцип отбора?

Ну и главное. Цель-то какая? я понимаю, была бы цель "составить комбинацию так, чтобы для каждого исхода получить наибольший/наименьший из предлагаемых коэффициентов". Или в продвинутом варианте - получить максимальный ожидаемый выигрыш (правда, тут придётся задавать некую вероятность каждого из исходов)...
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39530808
forklive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 - конечно работает не быстро.
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39530925
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так это вообще тривиально. Особенно если изменить хранение (например, в представлении), заменив соперника на упорядоченную пару, и соответственно введя вариант "Поражение". Т.е. не

Контора Соперник Тип коэффициента Тип рынка КоэффициентБК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

Обычное декартово произведение нескольких копий таблицы, если нужны все варианты в одной записи... или скажем выбор по генерируемой маске, если надо каждый вариант в своей записи, как в примере.
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39531081
forklive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinaили скажем выбор по генерируемой маске, если надо каждый вариант в своей записи, как в примере.

Вот здесь не понял: что значит "выбор по генерируемой маске"?

И получается - если исходов 2 - то одключаем 2 таблицы, если 3 исхода - 3, и т.д.
Т.е. универсальности не получится.
Я ведь все правильно понял?
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39531207
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
forkliveчто значит "выбор по генерируемой маске"?В источник данных запроса добавляется синтетическая таблица типа
Код: sql
1.
2.
3.
          SELECT 'Победа' value
UNION ALL SELECT 'Ничья'
UNION ALL SELECT 'Поражение'


которая множится на всё остальноке и позволяет раздёргать одну комбинацию Контора-Соперник1-Соперник2 на три записи с разными вариантами исхода.

forkliveполучается - если исходов 2 - то одключаем 2 таблицы, если 3 исхода - 3, и т.д.
Т.е. универсальности не получится.
Ну почему? Таблиц всегда будет три. Просто в каждой таблицы делается пред-отбор по типу исхода, для П1П2 в подтаблице для ничьих будет пусто, а в соотв. полях выходного набора NULL, отсеять которые не составляет труда.
...
Рейтинг: 0 / 0
Группировка комбинаций
    #39531946
forklive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо за ответы и за помощь!
Пошел разбираться)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка комбинаций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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