[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подсчет пропущенных очков по дням в месяце
zippel
Есть три массива:
Первый: дни
Второй: очки

Допустим месяц 31 день. Нужно посчитать кол-во очков за весь месяц. Не проблема. Посчитали.
Однако, в массиве "дни" есть дни месяца которые вылетели, соответственно для таких дней, данные в массив "очки" не заносились.

Задача: вывести сколько очков было начислено каждый день. Учитывая что данные о них поступали с перебоями - появляется некая сложность в реализации данного метода. Потому что разрыв может быть не только в середине месяца.. может быть с 20го, по 5е числа. Тогда вообще полная жопа, потому что счет в данный момент идет только с 1го по 1е числа. Т.е. получается данные не достоверны и в каждый пропущенный день, я теряю N кол-во очков. Подскажите как лучше всего реализовать алгоритм подсчета пропущенных очков, если надо выводить статистику за каждый день месяца, целого года..

user posted image
Valick
Цитата (zippel @ 4.05.2016 - 17:31)
Подскажите как лучше всего реализовать алгоритм подсчета пропущенных очков

как можно подсчитать то чего нет?


_____________
Стимулятор ~yoomoney - 41001303250491
sg.com
о каких очках речь user posted image?
Игорь_Vasinsky
Цитата
Есть три массива:

Цитата
Первый: дни
Второй: очки


user posted image

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Kusss
Создай пропущенные/пустые дни, со значением ноль. Ну чтобы в массиве не было "дыр".
Valick
Kusss, накуя? smile.gif


_____________
Стимулятор ~yoomoney - 41001303250491
zippel
Цитата (Kusss @ 5.05.2016 - 14:15)
Создай пропущенные/пустые дни, со значением ноль. Ну чтобы в массиве не было "дыр".

Это тоже самое только в профиль. Скрипт и так считает то чего нет как 0. На самом деле там что то есть, но счетчик видимо просто вылетает или не успевает всегда списать их.

P.S. я решил как сделать, что бы не добавлять еще лишний запрос.. брать МАХ и МIN значения каждого месяца. И когда появится косяк с 1м числом месяца, просто считать через MAX значение предыдущего месяца. Это херня.. так прокатит.

Прикол вот в чем. Теперь мне надо такое же проделать и для часов дня user posted image, но это тоже походу та же засада, спасает что диапазон - месяц. А не год. Хотя.. алгоритм тот же.

Кто спрашивал про бонусы: http://images.vfl.ru/ii/1462456995/9d2d9c3c/12554341.jpg user posted image

Цитата
Цитата
Есть три массива:

Цитата
+1
sg.com
Цитата (zippel @ 5.05.2016 - 16:46)
Кто спрашивал про бонусы

Не вижу сложностей, судя по представленной таблице и описанию, "очки" это то что занесено в клетках таблицы, например 0,7кВтч, это 0,7 "очков", если это показания счетчика, то это - показания счетчика, а если коэффициенты, то можно сделать им соответствующие индексы и ничего не будет выпадать. Ну это только догадки, по описанию сложно однозначно судить что есть что.
sergeiss
zippel, можно так подойти.
Во-первых, сделай не несколько массивов, а один. Где каждый элемент содержит несколько элементов.
Во-вторых, сначала инициализируй этот массив на весь период времени, с которым будешь работать. Установи все данные в ноль.
И только затем загружай данные в этот массив. Тогда ты автоматически получишь нулевые данные для тех дней, для которых данных нет.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
zippel
Цитата (sergeiss @ 6.05.2016 - 12:07)
zippel, можно так подойти.
Во-первых, сделай не несколько массивов, а один. Где каждый элемент содержит несколько элементов.
Во-вторых, сначала инициализируй этот массив на весь период времени, с которым будешь работать. Установи все данные в ноль.
И только затем загружай данные в этот массив. Тогда ты автоматически получишь нулевые данные для тех дней, для которых данных нет.

Инициализирую массивы когда делаю запрос к БД. Сейчас возникла вот эта надобность и я теперь думаю как сделать, через мультизапросы или есть какой нибудь другой метод запроса.
Например как с CASE THEN, но у меня через него что-то не выход.. Плохо знаком с MySQL :\
zippel
к тому же, я уже говорил - что отсутствие значения - не значит что оно 0 wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.