Анализ записей телефонных звонков в БД MySQL - PullRequest
1 голос
/ 06 августа 2009

В прошлый раз, когда я задал здесь вопрос, у меня появилось множество отличных идей о том, как решить конкретную проблему. Как я объяснил в прошлый раз, программирование - это то, что я люблю делать, но это не то, что я изучал в школе, поэтому у меня нет подходящих методов ведения дел. Я инженер-электрик, переживающий рецессию, делаю несколько программных концертов тут и там.

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

Одной из вещей, которые я считаю очень важными, является определение МАКСИМАЛЬНОЙ НАГРУЗКИ ВЫЗОВОВ за конкретное заданное время (максимальное количество одновременных вызовов). Например, я хочу узнать максимальное количество одновременных телефонных звонков 3 августа.

Теперь, к счастью для меня, это программное обеспечение хранит всю свою информацию в базе данных MySQL, поэтому у меня есть таблица со ВСЕМИ вызовами с момента первого запуска системы.

В таблице «Вызовы» есть 2 файла с именами «call_start» и «call end», и они имеют тип «datetime».

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

В основном я работаю с C #, поэтому приветствуются идеи использования C #. Я не уверен, что это можно сделать исключительно в MySQL, но это также сработает.

Спасибо всем за помощь.

Ответы [ 3 ]

1 голос
/ 06 августа 2009

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

create temporary table starts (call_started time);
insert into starts select distinct call_started from calls;

select starts.call_started, count(*)
  from starts, calls
  where starts.call_started >= calls.call_started and starts.call_started <= calls.call_ended
  group by starts.call_started
  order by count(*) desc;

Если вы хотели только максимальную загрузку, просто добавьте «LIMIT 1» к окончательному запросу. Если вы хотите построить график результатов, просто сортируйте по времени запуска.

1 голос
/ 06 августа 2009

Был такой же вопрос, заданный на SO некоторое время назад, взгляните: Найти количество одновременных пользователей в записях SQL

Надеюсь, это работает и на Mysql.

0 голосов
/ 06 августа 2009

Не самый эффективный способ сделать это, но это даст вам счет в час (на сегодня), включая все звонки, которые начинаются и заканчиваются в течение этого часа.

select hour(call_start),count(*) from calls 
where call_end <= hour(call_start) and date(call_start) = date(now())
group by hour(call_start);
...