Антон просил писать меня о работе... Вот почему бы не написать?
Сейчас бьюсь над задачей отчётов по телефонным разговорам отдела техподдержки. Все звонки в компании проходят через корпоративную АТС, эта АТС пишет в базу данных информацию о звонках.
Пишет она довольно примитивные вещи - номер внутреннего абонента, номер внешнего абонента, тип вызова (поднятие трубки, переадресация), ну и длительность.
Засада номер раз - событие "звонок остался без ответа" помечается не всегда. Тем не менее, пропущенные звонки это очень важная часть статистики.
Засада номер два - не пишется на кого пришёл вызов. Таким образом, неизвестно, кто именно не поднял трубку. К сожалению, проблема неразрешимая, поэтому показываю пропущенные по всей компании.
Засада номер три - АТС не знает сущности "один входящий звонок". Или она злостно о ней умалчивает. А отличать два разговора от одного с переадресацией нужно. Переадресацию можно определить только по косвенным признакам.
Засада номер четыре. Есть разделение доступа - показ не всей статистики, а только разговоров одного отдела. Тем не менее нужно знать, от кого пришёл звонок (кто переадресовал) и куда ушёл.
Засада номер пять - требуется формировать отчёты за месяц. По запросу. Крайне желательно, чтобы оно думало меньше десяти минут.
В общем-то, интересно. Трёхэтажные запросы к базе с агрегирующими функциями пишу уже на лету, без заглядывания в документацию (последний раз подобные запросы я писал лет восемь назад).
Комментарии к коду рулят и педалят. Вот когда думаешь "здесь мы напишем вот такую шнягу, потому что эта подзадача решается только через это самое место" - вот то же самое нужно написать в качестве комментария. Впрочем, после того как я научился писать документацию, написание комментариев это вообще плёвое дело.
PS Лучи ненависти людям, пишущим в базу NULL-ы без веской причины. COALESCE на каждый чих бесит писать, и очень засоряет код.
================
29.10.2010 Таки на запросе "десять человек и месяц" оно думало меньше десяти минут. Девять. Но всё равно конечно это безумно долго.
Сейчас бьюсь над задачей отчётов по телефонным разговорам отдела техподдержки. Все звонки в компании проходят через корпоративную АТС, эта АТС пишет в базу данных информацию о звонках.
Пишет она довольно примитивные вещи - номер внутреннего абонента, номер внешнего абонента, тип вызова (поднятие трубки, переадресация), ну и длительность.
Засада номер раз - событие "звонок остался без ответа" помечается не всегда. Тем не менее, пропущенные звонки это очень важная часть статистики.
Засада номер два - не пишется на кого пришёл вызов. Таким образом, неизвестно, кто именно не поднял трубку. К сожалению, проблема неразрешимая, поэтому показываю пропущенные по всей компании.
Засада номер три - АТС не знает сущности "один входящий звонок". Или она злостно о ней умалчивает. А отличать два разговора от одного с переадресацией нужно. Переадресацию можно определить только по косвенным признакам.
Засада номер четыре. Есть разделение доступа - показ не всей статистики, а только разговоров одного отдела. Тем не менее нужно знать, от кого пришёл звонок (кто переадресовал) и куда ушёл.
Засада номер пять - требуется формировать отчёты за месяц. По запросу. Крайне желательно, чтобы оно думало меньше десяти минут.
В общем-то, интересно. Трёхэтажные запросы к базе с агрегирующими функциями пишу уже на лету, без заглядывания в документацию (последний раз подобные запросы я писал лет восемь назад).
Комментарии к коду рулят и педалят. Вот когда думаешь "здесь мы напишем вот такую шнягу, потому что эта подзадача решается только через это самое место" - вот то же самое нужно написать в качестве комментария. Впрочем, после того как я научился писать документацию, написание комментариев это вообще плёвое дело.
PS Лучи ненависти людям, пишущим в базу NULL-ы без веской причины. COALESCE на каждый чих бесит писать, и очень засоряет код.
================
29.10.2010 Таки на запросе "десять человек и месяц" оно думало меньше десяти минут. Девять. Но всё равно конечно это безумно долго.