- Вывод данных из БД за последние н дней, курил, 01:16 , 27-Мрт-17 (1)
Эээ, дружище, причем тут база и перл? Нам бы узнать что это за база - MySQL, PostgreSQL, SQLite, CSV может. Плюс, нужно еще узнать какая структура у базы, потом уже можно будет помочь Вам..Скажем, если там MySQL и простая таблица, можно сдлеать такой запрос например: SELECT call_date, AVG(call_duration) AS average_duration FROM calls WHERE call_date >= DATE_SUB(NOW(), INTERVAL 30 DAY) GROUP BY call_date
- Вывод данных из БД за последние н дней, HattabbI4, 07:22 , 27-Мрт-17 (2) –1
База MySQL. Таблица выглядит вот так: https://drive.google.com/file/d/0Byy2RDccuWnTdmQ5TXlSVm1iNkV... сделать нужно что-то типа этого: https://docs.google.com/spreadsheets/d/1Dtby-VeUnt8Wg_WEYqeD... на данный момент есть вот что: #!/usr/bin/perl use Date::Calc; use CGI::Carp qw(fatalsToBrowser); ($mday,$mon,$year,) = localtime(time); $year=$year+1900; $mon=$mon+1; if ($mon<10) { $mon="0".$mon; } if ($mday<10) { $mday="0".$mday; } $hour=$hour-1; if ($hour<10) { $hour="0".$hour; } print "Content-type: text/html; charset=utf-8\n\n"; print " <html> <head> <title>Отчет Call-Centr</title> <style> label { display:block; } </style> </head> <body>"; print "$mday.$mon.$year "; print scalar localtime(); # Соединяемся с базой. use DBI; my $dsn='DBI:mysql:testasterisk:localhost'; my $db_user_name='testasterisk'; my $db_password='testpass'; my $dbh=DBI->connect($dsn,$db_user_name,$db_password) || die ("Ошибка: $DBI::errstr"); $dbh->do("SET NAMES utf8"); #делаем выборку по обработанным звонкам дня 1 my $day1 = $mday-30; #пытался сделать по дням print $day5; my $sth = $dbh->prepare(" SELECT wait_time FROM stat WHERE Status='ANSWERED'"); $sth->execute(); $sth->finish(); #делаем выборку по пропущенным звонкам my $swt = $dbh->prepare(" SELECT AVG(wait_time) FROM stat WHERE Status='NO ANSWER'"); $swt->execute(); #находим общее количество не отвеченных звонков my $swtrows = $dbh->prepare(" SELECT wait_time FROM stat WHERE Status='NO ANSWER'"); $swtrows->execute(); #находим максимальное время ожидания при не отвеченном звонке my $swtm = $dbh->prepare(" SELECT MAX(wait_time) FROM stat WHERE Status='NO ANSWER'"); $swtm->execute(); my $sup = $swtrows->rows; my $sup1 = $sth->rows; #сервисные переменные для подсчета звонков my $row = $swt->fetchrow_array(); $sth->finish(); my $row1 = $swtm->fetchrow_array(); $swtm->finish(); $swt->finish(); $swtrows->finish(); $row = sprintf("%.0f",$row); #округляем my $sup2=$sup+$sup1; #общее кол-во звонков print "<table border=1 align=center>"; print "<tr><td>Число</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td> <td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td> <td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td><td>31</td></tr>"; #возможно не правильно в дальнейшем можно поменять print "<tr><td>Общее количество обработанных звонков:</td><td>$sup2</td></tr>"; print "<tr><td>Среднее время ожидания ответа:</td><td>$row</td></tr>"; print "<tr><td>Максимальное время ожидания ответа:</td><td>$row1</td></tr>"; print "<tr><td>Общее количество не отвеченных звонков:</td><td>$sup</td></tr>"; print "<tr><td>Общее количество обработанных звонков:</td><td>$sup1</td></tr>"; print "</table>"; print " </body> </html>"; $dbh->disconnect();
- Вывод данных из БД за последние н дней, Pahanivo, 11:37 , 27-Мрт-17 (4)
зачем вываливать сюда мусор с форматированием табличек?
- Вывод данных из БД за последние н дней, HattabbI4, 11:41 , 27-Мрт-17 (5) –2
> зачем вываливать сюда мусор с форматированием табличек?Я конечно извиняюсь, но вы на форум заходите для того чтобы помочь другим или хвост распускать, вы бы лучше по теме что-то посоветовали конкретное кроме как ссылок на мануалы, которые я и без вас прочитал и придирок к посту, спасибо что к грамматике моей не придрались.
- Вывод данных из БД за последние н дней, Pahanivo, 11:50 , 27-Мрт-17 (6)
> Я конечно извиняюсь, но вы на форум заходите для того чтобы помочь > другим или хвост распускать, вы бы лучше по теме что-то посоветовали > конкретное кроме как ссылок на мануалы, которые я и без вас > прочитал и придирок к посту, спасибо что к грамматике моей не > придрались.Я извиняться не буду ибо не за что. Если есть проблемы с расчетом даты - да к и оставляй куски с этим кодом. Портянки с html тут каким местом??? Как легко и просто вычитать даты я указал. Мож взять себя в руки, заткнуть фонтан нытья и погуглить что таки такое unix time? Там глядишь и прозрение придет.
- Вывод данных из БД за последние н дней, mr_gfd, 19:18 , 03-Апр-17 (17)
этот крап можно на чистом sh организовать, а не городить CGI сервер. причем одним запросом. echo 'SELECT avg(wait_time) as "Wiat time avg", wait_time as "wait_time", max(wait_time) from stat where status="NO ANSWER" and call_date >= DATE_SUB(NOW(), INTERVAL 1 MONTH);' | mysql -uuser -ppasswd а дальше его куда угодно. можно хоть почтой, хоть файлом, хоть в хтмл отформатировать и внешний css навесить для красоты.
- Вывод данных из БД за последние н дней, Pahanivo, 23:47 , 04-Апр-17 (18) –1
Ты уровень кода глянь для начала ))if ($mon<10) { $mon="0".$mon; } if ($mday<10) { $mday="0".$mday; } $hour=$hour-1; if ($hour<10) { $hour="0".$hour; } а это ваще огонь my $day1 = $mday-30; #пытался сделать по дням
- Вывод данных из БД за последние н дней, HattabbI4, 17:22 , 06-Апр-17 (21)
> этот крап можно на чистом sh организовать, а не городить CGI сервер. > причем одним запросом. > echo 'SELECT avg(wait_time) as "Wiat time avg", wait_time as "wait_time", max(wait_time) > from stat where status="NO ANSWER" and call_date >= DATE_SUB(NOW(), INTERVAL 1 > MONTH);' | mysql -uuser -ppasswd > а дальше его куда угодно. можно хоть почтой, хоть файлом, хоть в > хтмл отформатировать и внешний css навесить для красоты.это получается статистика за месяц, а мне нужно за все дни месяца спасибо так проще будет, вот бы как-то сделать это только для каждого дня
- Вывод данных из БД за последние н дней, Pahanivo, 12:52 , 08-Апр-17 (24)
> это получается статистика за месяц, а мне нужно за все дни месяца это получается что ты ленивый и наглый идиот (да простит меня модер) который читая про select не удосужился дочитать даже до group by, хотя думаю не читал вообще - потому как не разобраться с тупейшей учебной задачей про селект надо сильно умудрится. в первой попавшейся книжке со 146% вероятностью подобная задачу будет рассмотрена в качестве примера. и да, внизу есть пример с группировкой - но надо ведь так напрячься - скролить и читать.
- Вывод данных из БД за последние н дней, Pahanivo, 11:36 , 27-Мрт-17 (3)
> Вопрос в другом, данные нужно выводить за последние 3 дней вот тут > у меня сложности и возникли, сначала хотел из сегодняшней даты вычитать > 30 и потом прибавлять по одному, но получается что я смогу > вычесть только до 1 числа месяца и более того не во > всех месяцах 30 дней.фигня какая то понаписано и толком не понятно ... я так понимаю проблема встала с получением параметра для datetime типа что бы указать его в запросе? если нужно привязываться к дням месяца, месяцу, году и т.д. - сложностей вообще не вижу, читаем ман про временные функции перла. если нужно брать произвольный интервал в любую стороно от произвольной точки времени - лучше сконвертить datetime в unix timestamp (unix time) обсчитать в нем сдвиги, результат сконвертить обратно.
- Вывод данных из БД за последние н дней, VladimirV, 18:16 , 27-Мрт-17 (7)
>> Вопрос в другом, данные нужно выводить за последние 3 дней вот тут >> у меня сложности и возникли, сначала хотел из сегодняшней даты вычитать >> 30 и потом прибавлять по одному, но получается что я смогу >> вычесть только до 1 числа месяца и более того не во >> всех месяцах 30 дней. > если нужно привязываться к дням месяца, месяцу, году и т.д. - сложностей > вообще не вижу, читаем ман про временные функции перла. > если нужно брать произвольный интервал в любую стороно от произвольной точки > времени - лучше сконвертить datetime в unix timestamp (unix time) обсчитать > в нем сдвиги, результат сконвертить обратно.вообщем правильно еще можно почитать info date там есть даже примеры date --date='3 days ago'
- Вывод данных из БД за последние н дней, HattabbI4, 07:01 , 28-Мрт-17 (8) –1
>[оверквотинг удален] >>> всех месяцах 30 дней. >> если нужно привязываться к дням месяца, месяцу, году и т.д. - сложностей >> вообще не вижу, читаем ман про временные функции перла. >> если нужно брать произвольный интервал в любую стороно от произвольной точки >> времени - лучше сконвертить datetime в unix timestamp (unix time) обсчитать >> в нем сдвиги, результат сконвертить обратно. > вообщем правильно > еще можно почитать info date > там есть даже примеры > date --date='3 days ago' Скажите пожалуйста, каким образом мне связать дату высчитанную перлом и дату из таблицы БД, чтобы поместить высчитанные данные в нужную графу отчета?
- Вывод данных из БД за последние н дней, fantom, 12:16 , 28-Мрт-17 (9)
>[оверквотинг удален] >>> вообще не вижу, читаем ман про временные функции перла. >>> если нужно брать произвольный интервал в любую стороно от произвольной точки >>> времени - лучше сконвертить datetime в unix timestamp (unix time) обсчитать >>> в нем сдвиги, результат сконвертить обратно. >> вообщем правильно >> еще можно почитать info date >> там есть даже примеры >> date --date='3 days ago' > Скажите пожалуйста, каким образом мне связать дату высчитанную перлом и дату из > таблицы БД, чтобы поместить высчитанные данные в нужную графу отчета?на мой не искушенный взгляд проблема простая: Перестаньте работать с датой, как с набором чисел, начните работать с датой как с ДАТОЙ! Вотсобственно и все...
- Вывод данных из БД за последние н дней, HattabbI4, 12:21 , 28-Мрт-17 (10) –1
>[оверквотинг удален] >>> вообщем правильно >>> еще можно почитать info date >>> там есть даже примеры >>> date --date='3 days ago' >> Скажите пожалуйста, каким образом мне связать дату высчитанную перлом и дату из >> таблицы БД, чтобы поместить высчитанные данные в нужную графу отчета? > на мой не искушенный взгляд проблема простая: > Перестаньте работать с датой, как с набором чисел, начните работать с датой > как с ДАТОЙ! > Вотсобственно и все...к сожалению, понятней не стало
- Вывод данных из БД за последние н дней, Pahanivo, 14:44 , 28-Мрт-17 (11)
> Скажите пожалуйста, каким образом мне связать дату высчитанную перлом и дату из > таблицы БД, чтобы поместить высчитанные данные в нужную графу отчета?Высчитанную даты положить в одну переменную, дату из БД в другую, вставить обе переменные в строку отчета при выводе.
- Вывод данных из БД за последние н дней, ACCA, 17:58 , 28-Мрт-17 (12)
>> Скажите пожалуйста, каким образом мне связать дату высчитанную перлом и дату из >> таблицы БД, чтобы поместить высчитанные данные в нужную графу отчета? > Высчитанную даты положить в одну переменную, дату из БД в другую, вставить > обе переменные в строку отчета при выводе.Так ты его совсем запутаешь, колонка SELECT - это не переменная. Даты вычислять нужно в SQL, чтобы иметь Single Source of Truth. SELECT call_date, DATE_SUB(NOW(), INTERVAL 1 MONTH), AVG(call_duration) AS average_duration FROM calls WHERE call_date >= DATE_SUB(NOW(), INTERVAL 1 MONTH) GROUP BY call_date
- Вывод данных из БД за последние н дней, VladimirV, 18:21 , 28-Мрт-17 (13)
>[оверквотинг удален] >>> вообще не вижу, читаем ман про временные функции перла. >>> если нужно брать произвольный интервал в любую стороно от произвольной точки >>> времени - лучше сконвертить datetime в unix timestamp (unix time) обсчитать >>> в нем сдвиги, результат сконвертить обратно. >> вообщем правильно >> еще можно почитать info date >> там есть даже примеры >> date --date='3 days ago' > Скажите пожалуйста, каким образом мне связать дату высчитанную перлом и дату из > таблицы БД, чтобы поместить высчитанные данные в нужную графу отчета?В чем проблема-то? Как подставить переменную в sql запрос? Возникает вопрос скрипт приведенный выше чужой? Может поможет http://www.mysql.ru/docs/man/Date_calculations.html http://www.mysql.ru/docs/man/Date_and_time_functions.html http://www.mysql.ru/docs/man/Using_DATE.html
- Вывод данных из БД за последние н дней, ss, 08:58 , 31-Мрт-17 (15) –2
> Вопрос в другом, данные нужно выводить за последние 3 дней вот тут > В общем я в логическом тупике, прошу помощи :) взять текущее время в юникстайм вычесть из него (60*60*24*3) вставить в селект получившееся число. это в большинстве случаев - вся что вам надо знать о вычислении разницы в датах. в зависимости от настройки базы или сессии - вы можете использовать разный формат даты. но из вашего скрипта мне вообще говоря не видно где у вас там колонка с датой? то есть таймстамп то у вас в базе есть у строк? если таймтамп пишеться как дата- то там и так юникстайм по умолчанию... если текстовое поле- хреновый у вас был программист. ну тогда просто добавляется одна строка по преобразованию формата даты к юникстайму и далее все как описано выше...
- Вывод данных из БД за последние н дней, михалыч, 07:40 , 06-Апр-17 (19)
> Вопрос в другом, данные нужно выводить за последние 3 дней вот тут > у меня сложности и возникли, сначала хотел из сегодняшней даты вычитать > 30 и потом прибавлять по одному, но получается что я смогу > вычесть только до 1 числа месяца и более того не во > всех месяцах 30 дней.вычесть можно 30 дней,можно больше, можно меньше > В общем я в логическом тупике, прошу помощи :) > Каким образом вывести данные на страницу за последние 30 дней, как правильно > сделать выборку из БД чтобы не делать отдельный запрос для каждого > дня. нужно делать выборку сразу за весь требуемый период, то есть за 30 дней, текущий месяц, предыдущий месяц или любой требуемый период времени > В идеале еще нужно сделать ссылки на данные за последние месяцы, но > думаю с этим я разберусь когда буду понимать логику вычитания дат. там ничего сложного, когда поймешь )) > Заранее огромное спасибо. > PS в перле я очень слаб поэтому по возможности прошу давать развернутые > ответы с кусками кода. видимо возникла сложность с передачей временных параметров с/на страницу отчета и в базу данных?
- Вывод данных из БД за последние н дней, HattabbI4, 11:57 , 06-Апр-17 (20)
> видимо возникла сложность с передачей временных > параметров с/на страницу отчета и в базу данных?Вот в этом и проблема я не понимаю как помещать данные полученные из БД в нужные мне ячейки в таблице. Как видно на примере я смог высчитать статистику за весь период, в принципе изменив запрос я могу сделать статистику за любой период, но сделать за последние n дней не понятно. Жесть как же сложно объяснить. Как написать запрос вполне понятно, не понятно куда положить результаты запроса для вычислений и как потом результаты вычислений положить в нужные ячейки html таблицы, то есть под правильную дату. При этом чтоб она каждый день смещалась на день вперед. Возможно я вообще все не правильно начал делать, я почти уверен что все не так. Поэтому я и написал на форумах, однако в ответ получил только критику и ссылки на мануалы которые уже читал.
- Вывод данных из БД за последние н дней, михалыч, 19:57 , 06-Апр-17 (22)
>> видимо возникла сложность с передачей временных >> параметров с/на страницу отчета и в базу данных? > Вот в этом и проблема я не понимаю как помещать данные полученные > из БД в нужные мне ячейки в таблице. > Как видно на примере я смог высчитать статистику за весь период, в > принципе изменив запрос я могу сделать статистику за любой период, но > сделать за последние n дней не понятно. > Жесть как же сложно объяснить.Я понял > Как написать запрос вполне понятно, не понятно куда положить результаты запроса для > вычислений и как потом результаты вычислений положить в нужные ячейки html > таблицы, то есть под правильную дату. При этом чтоб она каждый > день смещалась на день вперед. это делается в цикле > Возможно я вообще все не правильно начал делать, я почти уверен что > все не так. Поэтому я и написал на форумах, однако в > ответ получил только критику и ссылки на мануалы которые уже читал. да, ты начал делать не совсем правильно, я подскажу чуть позже, бывает легче показать на примере, чем объяснять
- Вывод данных из БД за последние н дней, HattabbI4, 09:12 , 08-Апр-17 (23) –1
> я подскажу чуть позже, бывает легче показать на примере, чем объяснять так оно, жду.
- Вывод данных из БД за последние н дней, михалыч, 05:48 , 12-Апр-17 (28)
>> я подскажу чуть позже, бывает легче показать на примере, чем объяснять > так оно, жду.я сожалею, но моё обещание с примером затянулось выдался вечерок свободного времени, набросал вариант выборки из БД но затем, вижу, что на приведённом примере https://docs.google.com/spreadsheets/d/1Dtby-VeUnt8Wg_WEYqeD... отчёт строится горизонтально, а у меня вертикально )) пришлось переписать свой пример с максимально приближённому варианту БД из https://drive.google.com/file/d/0Byy2RDccuWnTdmQ5TXlSVm1iNkV... и как всегда, возникают другие важные и неотложные дела, которые не могут подождать и которые ну ни как нельзя отодвинуть написал весь скрипт полностью, захотелось проверить, что получилось )) поскольку БД с asterisk под рукой нет, пришлось создать и затем набить эту БД какими-то левыми значениями, мусором одним словом ну не буду же я вносить сотню-другую строк вручную, пришлось написать для этого другой скрипт )) захотелось сделать проверку входных данных, ну чтобы пользователь не мог передать некорректные значения в переменные, мусор всякий (SQL-инъекции и всё такое прочее )) дописал скрипт потом подумал, что возможно в моих скриптах не всё будет сходу понятно и вызовет в свою очередь дополнительные вопросы, что, откуда и куда пришлось прокомментировать, максимально )) в результате, скрипт растянулся до неприличных размеров нет, ну если выкинуть проверки и порезать комменты, то в сухом остатке останется немного короче, куда cкинуть, если ещё нужно ?
- Вывод данных из БД за последние н дней, HattabbI4, 13:45 , 12-Апр-17 (29)
> короче, куда cкинуть, если ещё нужно ? Спасибо большое! ivanovroman.russia@gmail.com сюда можно либо залейте куда нибудь я скачаю
- Вывод данных из БД за последние н дней, михалыч, 17:24 , 12-Апр-17 (30)
ушло, возможно упало в спам )) кодировка koi8-r
- Вывод данных из БД за последние н дней, Pahanivo, 09:15 , 14-Апр-17 (31)
> ушло, возможно упало в спам )) > кодировка koi8-r ну вот зачем ты подаешь нищим? https://vk.com/hattabbi4 особенно учитывая это: "Роман Иванов запись закреплена 28 мар 2015 Действия Ремонт компьютеров, ноутбуков. - чистка - настройка - удаление вирусов - удаление рекламы из браузеров - удаление всплывающих окон при запуске - ускорение работы - установка ПО Качественно, не дорого, в короткие сроки. " доперло? а?
- Вывод данных из БД за последние н дней, HattabbI4, 10:47 , 14-Апр-17 (33)
> доперло? а?У вас такой характер мерзкий, я сочувствую вам и вашему окружению. Всего хорошего.
- Вывод данных из БД за последние н дней, михалыч, 18:48 , 14-Апр-17 (38)
Pahanivo, ты, конечно, айтишник авторитетный, но зачем ты так ??> чукча не читатель? > искренне раздражают попрошайки у церкви дышащие перегаром ... > ну вот зачем ты подаешь нищим? унижая других - сам не возвысишься ну о чём вообще сыр-бор? ну возник вопрос, ну спросил человек на форуме помощи, и что? его не сразу поняли, пытались помочь, когда поняли лучше, многим стало лениво и скучно разжёвывать очевидные для них прописные истины а мне было немного интересно, и я решил подсказать, просто помочь, людям вообще свойственно делиться знаниями и опытом в stackoverflow вопросы бывают и простые и наивные, бывают и примитивные и ничего, на них, как ни странно, тоже отвечают, терпеливо и с пониманием, никто ещё не родился крутым всезнайкой в open source выкладывают такие крутые разработки, как говорится, без регистрации и смс а тут.. несколько строк кода, скрипт, да если кому-то будет полезен - да на здоровье, если ещё кому-то пригодится - вообще замечательно, может для себя что-то в прок отметят пусть используют как угодно и где угодно зарабатывают? ну и что? это ИХ дело, не моё, зачем считать чужие деньги
- Вывод данных из БД за последние н дней, Pahanivo, 21:13 , 14-Апр-17 (40)
> ну возник вопрос, ну спросил человек на форуме помощи, и что?лень читать доки и неумение понимать элементарные вещи (читай основы) не является технической проблемой ну сразу же видно когда человек делает, натыкаясь на проблемы, и когда просит сделать за него его работу ...
- Вывод данных из БД за последние н дней, Pahanivo, 21:14 , 14-Апр-17 (41)
> Pahanivo, ты, конечно, айтишник авторитетныйподъе*ал, негодяй :)
- Вывод данных из БД за последние н дней, HattabbI4, 10:44 , 14-Апр-17 (32)
> ушло, возможно упало в спам )) > кодировка koi8-r Огромное спасибо, особенно за второй скрипт, вы показали как делать все, и даже больше. Я очень вам благодарен.
- Вывод данных из БД за последние н дней, Pahanivo, 12:05 , 14-Апр-17 (34)
- Вывод данных из БД за последние н дней, HattabbI4, 12:47 , 14-Апр-17 (35) –1
> Уже продал заказчику? )) Не флудите тут, если хотите пообщаться пишите в вк. Я с удовольствием уделю вам время.
- Вывод данных из БД за последние н дней, Pahanivo, 16:47 , 14-Апр-17 (36) +1
> Не флудите тут, если хотите пообщаться пишите в вк. Я с удовольствием > уделю вам время.Мне просто ценник интересен за эту "работу" )) - Вывод данных из БД за последние н дней, Andrey Mitrofanov, 17:19 , 14-Апр-17 (37)
>> Уже продал заказчику? )) > Не флудите тут,До его ответа на твоё "не флудИте" у вас было по 12 флудо-постов. 13 0 0 3 -3 Pahanivo 12 0 0 5 -6 HattabbI4 4 0 0 0 0 михалыч 2 0 0 0 0 VladimirV
- Вывод данных из БД за последние н дней, Pahanivo, 21:11 , 14-Апр-17 (39)
> До его ответа на твоё "не флудИте" у вас было по 12 > флудо-постов.я то думаю че Андрюхи с аналитикой долго нет ... ))))
- Вывод данных из БД за последние н дней, Pahanivo, 12:54 , 08-Апр-17 (25)
ну хватит ему уже подавать - товарищ вообще извилины ни разу не напряг.
|