2014-12-16 5 views
1

У меня есть таблица в MySQL:MySQL - Среднее значение% от последнего дня вставках

+-----------------+-------------+------+-----+---------------------+-------+ 
| Field   | Type  | Null | Key | Default    | Extra | 
+-----------------+-------------+------+-----+---------------------+-------+ 
| period_duration | datetime | NO | PRI | 0000-00-00 00:00:00 |  | 
| duration  | varchar(6) | YES |  | NULL    |  | 
| sample   | varchar(2) | YES |  | NULL    |  | 
| corner   | varchar(10) | YES |  | NULL    |  | 
| country   | varchar(60) | NO | PRI |      |  | 
| roaming_partner | varchar(60) | NO | PRI |      |  | 
| pdp_in_total | int(8)  | YES |  | NULL    |  | 
| pdp_in_ok  | int(8)  | YES |  | NULL    |  | 
| pdp_in_not_ok | int(8)  | YES |  | NULL    |  | 
| pdp_in_ok_rate | int(8)  | YES |  | NULL    |  | 
+-----------------+-------------+------+-----+---------------------+-------+ 

Эта таблица содержит новые вставки ежечасно, что делает много различных period_duration на roaming_partner:

+---------------------+----------+--------+----------+---------+-----------------------+--------------+-----------+---------------+----------------+ 
| period_duration  | duration | sample | corner | country | roaming_partner  | pdp_in_total | pdp_in_ok | pdp_in_not_ok | pdp_in_ok_rate | 
+---------------------+----------+--------+----------+---------+-----------------------+--------------+-----------+---------------+----------------+ 
| 2014-12-16 14:00:00 | 3600  | 1  | GPRS_OUT | USA  | Operator1    |   796 |  787 |    9 |    99 | 
| 2014-12-16 15:00:00 | 3600  | 1  | GPRS_OUT | USA  | Operator1    |   1748 |  1706 |   42 |    98 | 
| 2014-12-16 16:00:00 | 3600  | 1  | GPRS_OUT | USA  | Operator1    |   7 |   7 |    0 |   100 | 

«ok_rate» - процентная ставка.

Мне нужно создать SELECT, который будет отображаться каждый country, roaming_partner и pdp_in_ok_rate из последних 24 вставок, со средним pdp_in_ok_rate% от этих вставок.

Это похоже на то, что я хотел, чтобы мой запрос SQL сказал: «Это средний pdp_in_ok_rate в последних 24 вставках для каждого оператора на вашем столе. Не во всей таблице, а из этих последних».

Может кто-нибудь, пожалуйста, помогите мне?

+2

Средние средние значения не имеют смысла. если одна запись имеет 1000 вставок успешно и 100% среднее значение, а другая запись имеет 2 вставки, из которых одна вставка не удалась, тогда у вас есть avg (100%, 50%) = 75%, а не 1001/1002 = 99,9% успешны. –

+0

Я использую это для поддержания ежедневных средних значений для целей сетевого мониторинга. Если я использую вашу логику, после заданного большого количества 100% s, каждый низкий процент пройдет мимо незамеченным ... Мне нужно увидеть средние значения на основе ежедневной логики. – ZeldaElf

+0

Может быть неуместным, но вот [другой вопрос того же автора] (http://stackoverflow.com/questions/27494394/mysql-select-to-retrieve-last-datetime). –

ответ

0

Это делает то, что вы хотите?

select country, roaming_partner, avg(pd_in_ok_rate) as avgrate 
from table t 
where period_duration >= date_sub(now(), interval -1 day) 
group by country, roaming_partner; 

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

select t.*, cr.avgrate 
from table t join 
    (select country, roaming_partner, avg(pd_in_ok_rate) as avgrate 
     from table t 
     where period_duration >= date_sub(now(), interval -1 day) 
     group by country, roaming_partner 
    ) cr 
    on t.country = cr.country and t.roaming_partner = cr.roaming_partner 
where period_duration >= date_sub(now(), interval -1 day); 
+0

Нет, это не так ... Я не хочу, чтобы средний показатель за весь стол, только на тех, где захвачен последний день! Представьте, что у вас 24 процента в день, и вы хотите знать их среднее значение каждый день, но не отбрасывая их значения из таблицы. – ZeldaElf

+0

Если я использую этот запрос, я могу получить среднее значение по всей таблице ... Мое желание состоит только в том, чтобы последние – ZeldaElf

+0

Это должно быть сложно, я думаю:/ – ZeldaElf

Смежные вопросы