powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка среднего количества записей
5 сообщений из 5, страница 1 из 1
Выборка среднего количества записей
    #38678979
borschev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что мы имеем:
1 таблица в ней > 100000 записей, в таблице имеется поле с датой 2014-06-15 15:30:12

Требуется получить среднее количество записей по часам за определенный период или неделю или месяц
Например за три дня записи с 4:00:00 до 4:59:59:

1 день 15 записей
2 день 10 записей
3 день 20 записей

получается всего 45 записей / 3 итого в среднем 15 записей.

Не знаю как правильно составить запрос
сейчас делаю так для получения общего количества

Код: php
1.
2.
3.
4.
$sql = "SELECT WEEK(start) AS week, COUNT(id) AS cnt
                FROM {{log}}
                WHERE DATE(start) >= DATE('".$this->tpl['search']['from']."') AND DATE(start) <= DATE('".$this->tpl['search']['to']."')
                GROUP BY week";


Не могу сделать чтобы высчитать количество дней чтобы высчитать среднее кол-во из cnt

Может я вообще не туда копаю
...
Рейтинг: 0 / 0
Выборка среднего количества записей
    #38678983
borschev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да еще записи могут делаться не каждый день, в среднем 4-5 дней в неделю
...
Рейтинг: 0 / 0
Выборка среднего количества записей
    #38679035
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borschev,


полезно бы занть немного бизнес смысл задания --
это одиночный запрос?
или вы строите систему где кленты/начальство
будут запрашивать много таких запросов по разным
периодам ?

Одиночный запрос -- что-то примерно типа:

Код: sql
1.
2.
3.
4.
select count(record_id)/datediff(%{start},%{end}) average_count
from tableA a
where a.created_on between %{start} and %{end}
and hour(a.created_on) = 4



Но если у вас много разнообразных запросов,
то удобнее будет посадить несколько э
удобных (денормализованых) полей
в дополнение к имеюшейся дате:
год, месяц (1..12), день (1..31), час(0..23).... можно
и минуты если нужна такая гранулярность.

Эту идею можно развить в сторону DWH
и сделать нормальную ось времени.
Это полезно если в записях есть еше несколько
(иерархических) полей по которым интересно фильтровать
...
Рейтинг: 0 / 0
Выборка среднего количества записей
    #38679046
borschev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем это статистика записей из лога

Запросы по разным периодам, в среднем по часам, дням, неделям, месяцам.

Требуется выстроить статистику в таком виде
Допустим период с 1 мая по 31 мая по часам

с 9 до 10 - в среднем 35 записей
10 - в среднем 20 записей
11 - в среднем 46 записей
12 - в среднем 10 записей
13 - в среднем 78 записей
14 - в среднем 90 записей
15 - в среднем 60 записей
16 - в среднем 45 записей

Допустим период с 1 января по 31 мая
по неделям
1 неделя - в среднем 560 записей
2 неделя - в среднем 780 записей
3 неделя - в среднем 346 записей
4 неделя - в среднем 227 записей
...
Рейтинг: 0 / 0
Выборка среднего количества записей
    #38679140
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Требуется выстроить статистику в таком виде
Допустим период с 1 мая по 31 мая по часам

с 9 до 10 - в среднем 35 записей
10 - в среднем 20 записей
11 - в среднем 46 записей
12 - в среднем 10 записей
13 - в среднем 78 записей
14 - в среднем 90 записей
15 - в среднем 60 записей
16 - в среднем 45 записей

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tableA : id, t_date, r_year, r_month, r_day, r_hour, log_text

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select  r_hour,  count(log_id)/datediff(%{day_end} - %{day_start}) cnt
from tableA a
where 
     r_year = %{year}
and r_month = %{month}
and r_day between %{day_start} and %{day_end}
and r_hour between %{hour_start} and %{hour_end}
group by  r_hour



Ну там вместо года-месяца-дня можно напрямую по дате
интервал задать.

А что не потеть, лучше посмотрите такую штучку:
http://community.pentaho.com/projects/mondrian/
Это дело не маленькое, но если разберетесь то получите
на выходе вот такую няшку:
http://demo.analytical-labs.com/

Еще в ОЛАП форуме есть ссылки на развертку Мондриана.
поишите по ключевому слову biwed.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка среднего количества записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]