:: Visual Foxpro, Foxpro for DOS
Re: Немного футбола
Foxtrot
Автор

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
сорян за неточность
последнюю серию найти не составило труда: нахожу дату последнего проигрыша, считаю количество всех матчей после этой даты
но вот такое проделать со всеми интервалами пока не получается


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Немного футбола
Sawradym

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
akvvohinc
Sawradym
Беспроигрышных серий ровно на одну больше чем проигрышей. Нулевая серия - тоже серия.
А кто решил, что "нулевая серия" - это беспроигрышная серия?
Да и вообще при таком подходе "нулевые серии" будут между любыми двумя матчами, а не только между проигрышами.
Нет. Нулевые серии будут только между двумя подряд проигранными матчами. Вычислив все серии, легко определить и максимальную и самую короткую и даже среднеарифметическую, мало ли что заинтересует футбольных гурманов. ;)

akvvohinc
И это не считая главного - зачем футболу эти "нулевые серии", если даже 1 матч серией не называется?
Кому интересно, что команда N имеет 10 беспроигрышных "серий" в таком варианте:
W-L-W-L-W-L-W-L-W-L-W-L-W-L-W-L-W-L-W-L
Интересно тем кто интересуется статистикой и анализом.


------------------
Ratings: 0 negative/0 positive
Re: Немного футбола
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Аспид
Не командой, запросом.
То есть запрос - это не команда?
А вот в Help это называется SELECT SQL command

Аспид
Совершенно правильное, логичное желание.
Зависит от постановки задачи.

На самом деле, если исходить из общих соображений, то ему захочется узнать много больше, чем просто максимальный размер такой серии. Как минимум:
1) название команды, которая ее исполнила;
2) сам перечень матчей, составляющих серию (по ним затем получать доп.статистику, например, продолжительность серии в днях, сколько очков было набрано и т.п.);
3) если таких серий будет больше одной, то получить все эти серии.

Допустим, можно соорудить некого SQL-монстра, обеспечивающего решение текущих хотелок.
Через пару месяцев хотелки разрастутся или изменятся, а ты уже забыл и как работает этот монстр, и не факт, что новые хотелки можно реализовать его модификацией.

Не лучше ли сразу решить задачу наиболее прозрачным способом, легким в понимании и открытым для дальнейших доработок?
Ratings: 0 negative/0 positive
Re: Немного футбола
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Sawradym
Нулевые серии будут только между двумя подряд проигранными матчами.
А как же тогда ваша аксиома:
Беспроигрышных серий ровно на одну больше чем проигрышей.
?

Здесь одна нулевая серия (L-L) или три (-L-L-)?
Ratings: 0 negative/0 positive
Re: Немного футбола
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
akvvohinc
некого SQL-монстра,
О каком монстре речь.
В хотелке, нет ничего необычного. Все легко решается. Аналогичные (похожие)алгоритмы в складских и продажных программах, думаю постоянно встречаются.

akvvohinc
Через пару месяцев хотелки разрастутся или изменятся, а ты уже забыл и как работает этот монстр, и не факт, что новые хотелки можно реализовать его модификацией.

Странно. Новые хотелки, решаются новым запросом. Возможно на основании данных полученных в этом.
akvvohinc
На самом деле, если исходить из общих соображений, то ему захочется узнать много больше, чем просто максимальный размер такой серии. Как минимум:
1) название команды, которая ее исполнила;
2) сам перечень матчей, составляющих серию (по ним затем получать доп.статистику, например, продолжительность серии в днях, сколько очков было набрано и т.п.);
3) если таких серий будет больше одной, то получить все эти серии.
Полагаю, получив результат первого запроса, легко реализовать все ваши пожелания, а так же и другие.

А вообще, это вопрос религии. Где все обрабатывать.
Затащить ВСЕ на клиента, и там обработать, понятным программисту образом.
Либо, разобраться с сиквелом, и решить все на сервере, и отдать клиенту, нужный набор данных.

Делают и так, и так. Но полагаю, по сегодняшнему феншую))) ТС идет правильным путем.
Ratings: 0 negative/0 positive
Re: Немного футбола
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Foxtrot
сорян за неточность
последнюю серию найти не составило труда: нахожу дату последнего проигрыша, считаю количество всех матчей после этой даты
но вот такое проделать со всеми интервалами пока не получается
Мне кажется алгоритм не точен.
берем 1 команду, 1 турнир.
ищем ск. макс. игр между проигрышами.
Потому как последний проигрыш, может быть после 30 беспроигрышных.

Паша упоминал про оконные функции, явно ваш случай.
Ratings: 0 negative/0 positive
Re: Немного футбола
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Foxtrot
сорян за неточность
последнюю серию найти не составило труда: нахожу дату последнего проигрыша, считаю количество всех матчей после этой даты
но вот такое проделать со всеми интервалами пока не получается

Для последней серии (повторяю):
- упорядочиваем матчи по датам (слева - старые, справа - свежие), далее назовем этот список элементов "сигнатурой"
- ищем слева направо последний проигранный матч, (или справа первый проигранный)
- все матчи вправо от этого проигранного и есть "серия" выигранных (длины 0, 1 и более)

Для поиска всех серий (интервалов?) выигрышей/проигрышей у одной команды:
- измеряем длину проигрышей справа сигнатуры, записываем найденную дату и длину в выходной поток (может пригодится), отрезаем серию проигрышей
- выполняем алгоритм для поиска последней серии выигрышей, записываем результат (дату и длину серии) в выходной поток
- отрезаем справа от сигнатуры эту серию выигрышей (уже знаем ее длину и дату)
- повторяем сначала, завершаем, когда длина сигнатуры станет равной 0


А вот как свести задачу к поиску "дырок" в автоинкрементном поле (возможно, для этого есть "стандартные" пути):
- опять создаем сигнатуру, т.е. упорядоченный список элементов, каждый элемент - {дата, признак выиграл/проиграл}
- нумеруем элементы слева направо от 1 до последнего (создаем аналог хорошо заполненного автоинкрементного поля)
- удаляем все элементы с признаком "проиграл" (или "выиграл")
- получили автоинкрементный список с "дырками", в котором ищем "серии"...

forum.foxclub.ru - вот тут есть трезвые мысли по поводу "дырок", и мои тоже )
Ratings: 0 negative/0 positive
Re: Немного футбола
Foxtrot
Автор

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
of63
- упорядочиваем матчи по датам (слева - старые, справа - свежие), далее назовем этот список элементов "сигнатурой"
- ищем слева направо последний проигранный матч, (или справа первый проигранный)
- все матчи вправо от этого проигранного и есть "серия" выигранных (длины 0, 1 и более)
селект покажи для тех кто с бронепоезда


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Немного футбола
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Описание оффа честно не понял)
Не вчитывался.
Foxtrot
селект покажи для тех кто с бронепоезда
Мне кажется их может быть очень много.
Возможно, если не окно, то CTE.
Но все же, без структуры написать запрос... затруднительно)

Кинь create table
А если еще и данных нагеренишь...
Думаю тут же тебе насочиняют на любой вкус
Ratings: 0 negative/0 positive
Re: Немного футбола
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> селект покажи для тех кто с бронепоезда
Идеи - бесплатно, код - оплата построчно

Кода (в виде SQL-запроса) нет, но реализация похожего есть (в ссылке). У меня была задача показать дыры в свозных нумерациях документов.
В фоксовом SQL не получилось, слелал в виде фоксовой проги. Но все кричат говоря, что я тебя не понимаю, но задача - раз плюнуть, и приводят свои селкты, предлагают "оконные функции" - я про это не в курсе.
Сам алгоритм поиска я привел, он в виде программы реализуем. Изложить в виде SQL-запроса, наверное, тоже можно (вложенные SQL-запросы - это же тоже "программа")...
Ratings: 0 negative/0 positive
Re: Немного футбола
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Foxtrot
В идеале одним селектом сие проделать, а если еще и без циклов, то ваще
Я просто исходил из этого пожелания.
И оно, на мой взгляд логично, коли данные на MS SQL.
К чему тащить на клиета 10 таблиц, и 100лям записей, для получения 10 строк?
Ratings: 0 negative/0 positive
Re: Немного футбола
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Аспид
К чему тащить на клиета 10 таблиц, и 100лям записей, для получения 10 строк?
Он описал лишь одну таблицу, а вытащить из нее надо не более 500 матчей (более длинных футбольных турниров пока нет). А далее делай с ними, что и как хошь.
Ratings: 0 negative/0 positive
Re: Немного футбола
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
akvvohinc
Он описал лишь одну таблицу, а вытащить из нее надо не более 500 матчей (более длинных футбольных турниров пока нет). А далее делай с ними, что и как хошь.
:
Сам же писал о дальнейшем развитии)))
Повторюсь, дело вкуса. Не умеешь на сервере, понятнее на клиенте, делай как тебе лучше.
А поскольку это вообще, вроде как для себя... я б развивался правильно (SQL рулит )
А можно оба реализовать, и увидеть, какой лучше.
Выложить оба здесь, и пусть народ наслаждается критикой, и спорит)))
Ratings: 0 negative/1 positive
Re: Немного футбола
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Прямо в тему, только что на sql.ru увидел.
www.sql.ru
5 строк всего
Уверен, так просто на клиенте не сделать.
Ratings: 0 negative/0 positive
Re: Немного футбола
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Если на "сервере" (интернетовском, где размещен футбольный сайт), то такая конструкция всегда сработает?...
SELECT
Id,
Val,
RN1 = ROW_NUMBER() OVER (PARTITION BY Val Order BY ID),
RN2 = ROW_NUMBER() OVER (Order BY ID)
(даже не знаю, что она означает, но, вероятно, делает то, что задано в ТЗ - "длины непрерывных последовательностей")



Исправлено 1 раз(а). Последнее : of63, 14.03.19 16:58
Ratings: 0 negative/0 positive
Re: Немного футбола
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Олег, ну ты и вопросики задаешь, как вчера родился... Это, в общем-то, кусок кода на Transact SQL (T-SQL), языке MS SQL сервера. При чем тут интернетовские серверы? А фоксовый код всегда сработает "на "сервере" (интернетовском, где размещен футбольный сайт)"?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Немного футбола
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Я не верю, что ROW_NUMBER() работает на всех платформах, и что это "стандарт" T-SQL/ Книжка по T-SQL у меня есть, там такой штуки не встречал, но наизусть ее не помню. Про OVER и PARTITION тоже не слышал, будем почитать... ЯП же развиваются (частоприменяемые пожелания юзеров оформляются в фреймверки, предикаты, во всякие конструкции, в которых не поймешь с разбега)

Доб офтоп. Я пока на DBF таблицах живу. Доживаю, до 2Г осталось 5 лет, но отодвинули пенс. возраст, плин. С ужасом думаю, что вместо каталога с табличками надо будет SQL-бандуру содержать... С табличками - их переписал Нортоном на машину, и вот они готовы к употреблению... С SQL-БД не знаком, только с фоксовым SQL

> А фоксовый код всегда сработает "на "сервере" (интернетовском, где размещен футбольный сайт)"?
Тоже не понимаю. Почему бы не сделать виртуальные машины, чтобы любые написанные проги можно было бы размещать на серверах в интернете. Например, написал прогу на фоксе, ее можно юзать по RDP, но нельзя разместить в виде сайта. Это плохо.



Исправлено 2 раз(а). Последнее : of63, 14.03.19 17:40
Ratings: 0 negative/0 positive
Re: Немного футбола
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
of63
Я не верю, что ROW_NUMBER() работает на всех платформах,
Какие еще "платформах"? Или ты так своеобразно именуешь версии сервера? Как минимум с 2005-го, который по нынешним меркам счиатется большой древностью.
Цитата:
и что это "стандарт" T-SQL
Это из стандартов SQL, а не T-SQL
Цитата:
/ Книжка по T-SQL у меня есть, там такой штуки не встречал, но наизусть ее не помню.
Какого-нибудь тухлого года?
Цитата:
Про OVER и PARTITION тоже не слышал, будем почитать...
Плохо, совсем закостенел...
Цитата:
ЯП же развиваются
Вот именно!
Цитата:
(частоприменяемые пожелания юзеров оформляются в фреймверки, предикаты, во всякие конструкции, в которых не поймешь с разбега)
Было бы желание. Вот когда его нет...

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Немного футбола
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
На Постгре пойдет?
Книжка тухлого года
Закостенел (но не до этого, есть более важные задачи, типа отчетности и налогообложенияЮ, там программирование не главное)
Желание есть, нет необходимости (см. п. выше) и времени соответственно
Ratings: 0 negative/0 positive
Re: Немного футбола
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
T-Sql - это язык для MS SQL, так же как PL/SQL язык для Oracl (свои диалекты ansi)
Кусок что ты привел, не имеет смысла, потому как это CTE, а ты выдрал его часть.
Первое что выдал гугл.
www.sql-tutorial.ru
В инете полно материала. И вроде как понятно...

И как полагаю, для постгри свой синтаксис, но смысла не меняет.
По моему CTE есть во всех современных субд.

ЗЫ посмотрел ссылку что я дал, так это ж как раз постгри)))



Исправлено 2 раз(а). Последнее : Аспид, 14.03.19 19:30
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика