The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Perl)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Вывод данных из БД за последние н дней, HattabbI4 (ok), 26-Мрт-17, (0) [смотреть все] –2

Сообщения [Сортировка по времени | RSS]


2. "Вывод данных из БД за последние н дней"  –1 +/
Сообщение от HattabbI4email (ok), 27-Мрт-17, 07:22 
База 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();

Ответить | Правка | Наверх | Cообщить модератору

4. "Вывод данных из БД за последние н дней"  +/
Сообщение от Pahanivo (ok), 27-Мрт-17, 11:37 
зачем вываливать сюда мусор с форматированием табличек?


Ответить | Правка | Наверх | Cообщить модератору

5. "Вывод данных из БД за последние н дней"  –2 +/
Сообщение от HattabbI4email (ok), 27-Мрт-17, 11:41 
> зачем вываливать сюда мусор с форматированием табличек?

Я конечно извиняюсь, но вы на форум заходите для того чтобы помочь другим или хвост распускать, вы бы лучше по теме что-то посоветовали конкретное кроме как ссылок на мануалы, которые я и без вас прочитал и придирок к посту, спасибо что к грамматике моей не придрались.

Ответить | Правка | Наверх | Cообщить модератору

6. "Вывод данных из БД за последние н дней"  +/
Сообщение от Pahanivo (ok), 27-Мрт-17, 11:50 
> Я конечно извиняюсь, но вы на форум заходите для того чтобы помочь
> другим или хвост распускать, вы бы лучше по теме что-то посоветовали
> конкретное кроме как ссылок на мануалы, которые я и без вас
> прочитал и придирок к посту, спасибо что к грамматике моей не
> придрались.

Я извиняться не буду ибо не за что. Если есть проблемы с расчетом даты - да к и оставляй куски с этим кодом. Портянки с html тут каким местом???
Как легко и просто вычитать даты я указал. Мож взять себя в руки, заткнуть фонтан нытья и погуглить что таки такое unix time? Там глядишь и прозрение придет.

Ответить | Правка | Наверх | Cообщить модератору

17. "Вывод данных из БД за последние н дней"  +/
Сообщение от mr_gfd (?), 03-Апр-17, 19:18 
этот крап можно на чистом 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 навесить для красоты.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

18. "Вывод данных из БД за последние н дней"  –1 +/
Сообщение от Pahanivo (ok), 04-Апр-17, 23:47 
Ты уровень кода глянь для начала ))

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; #пытался сделать по дням

Ответить | Правка | Наверх | Cообщить модератору

21. "Вывод данных из БД за последние н дней"  +/
Сообщение от HattabbI4email (ok), 06-Апр-17, 17:22 
> этот крап можно на чистом 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 навесить для красоты.

это получается статистика за месяц, а мне нужно за все дни месяца
спасибо так проще будет, вот бы как-то сделать это только для каждого дня

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

24. "Вывод данных из БД за последние н дней"  +/
Сообщение от Pahanivo (ok), 08-Апр-17, 12:52 
> это получается статистика за месяц, а мне нужно за все дни месяца

это получается что ты ленивый и наглый идиот (да простит меня модер)
который читая про select не удосужился дочитать даже до group by,
хотя думаю не читал вообще - потому как не разобраться с тупейшей учебной задачей про селект надо сильно умудрится. в первой попавшейся книжке со 146% вероятностью подобная задачу будет рассмотрена в качестве примера.
и да, внизу есть пример с группировкой - но надо ведь так напрячься - скролить и читать.


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру