Tariscope 4.6. Руководство пользователя
3. Приложения Tariscope
3.4. Работа с представлениями для вызовов
3.4.11 SQL запросы
Наиболее мощным средством для создания фильтров в Tariscope является их создание на основе SQL запросов. Чтобы создать такие запросы, щелкните по иконке Редактировать SQL-фильтр на панели инструментов открытого представления. Появится окно SQL-фильтр, пример которого представлен на рисунке 3.4.11.1.
Рисунок 3.4.11.1
SQL фильтр позволяет вам создать условия фильтрации любой сложности для любых полей таблицы вызовов. Следует вводить только условия фильтрации, используемые в SQL запросах после инструкции WHERE.
Мы рекомендуем использовать этот способ задания параметров фильтрации в том случае, когда вам не удается создать требуемый фильтр с помощью страницы Новое представление для звонков или, когда вам проще написать SQL запрос, чем выбирать требуемые поля на указанной выше странице. Как правило, создание SQL запросов требует определенных знаний языка SQL.
Для выбора условий отбора информации используются разные операторы.
Список таких операторов и их краткое описание приведены в Таблице 3.4.11.1.
Таблица 3.4.11.1
Оператор | Функция | Результат запроса | Пример использования |
= | Равно | Возвращает все записи, где величина поля равна набору символов, введенному после этого оператора | Вызовы от абонента с номером ‘347’: [Originator] = '347' |
<> | Не равно | Возвращает все записи, где величина поля не равна набору символов, введенному после этого оператора | Вызовы со стоимостью не равной 0: [Cost] <> 0 |
< | Меньше | Возвращает все записи, где значение поля меньше, чем величина, введенная после оператора | Вызовы с продолжительностью меньшей, чем 10 секунд: [CallSeconds]<10 |
<= | Меньше или равно | Возвращает все записи, где значение поля меньше или равно величине, введенной после оператора | Вызовы с датой 20.06.2017 или более ранние: [CallDate] <= '2017-06-20' |
> | Больше | Возвращает все записи, где значение поля больше, чем величина, введенная после оператора | Вызовы со стоимостью более 5 гривен: [Cost] > 5 |
>= | Больше или равно | Возвращает все записи, где значение поля больше или равно величине, введенной после оператора | Вызовы со стоимостью от 5 тенге и более: [Cost] >= 5 |
Like | Шаблон | Возвращает все записи, у которых значение поля соответствует введенному шаблону | Все вызовы в США: [ToTelephone] LIKE '%США%' |
Not Like | Не шаблон | Возвращает все записи, у которых значение поля не соответствует введенному шаблону | Все вызовы за исключением, содержащих ‘Индия’: [ToTelephone] NOT LIKE '%Индия%' |
In | Любое из | Возвращаются записи, значение поля которых входит в список введенных после оператора значений | Междугородние и международные вызовы: [CallType] IN (4, 5) |
Not In | Ни один из | Возвращаются записи, значение поля которых не входит в список введенных после оператора значений | Вызовы со всех АТС, за исключением АТС с идентификаторами 33,27: NOT ([PBXID] IN (33, 27)) |
Between | Между | Возвращает все записи, где значение поля попадает в заданный интервал |
Вызовы за период с 09.06.2017 по 30.06.2017: [CallDate] BETWEEN '2017-06-09' and '2017-06-30' |
Not Between | Не между | Возвращает все записи, где значение поля не попадает в заданный интервал | Все вызовы за исключением периода 01.05.2017 до 09.05.2017: [CallDate] >= '20170501' AND [CallDate] <= '20170509' |
Is null | Пустое | Возвращаются все записи, у которых значение поля равно null. | Вызовы, где поле Источник равно ‘null’: [Originator] IS NULL |
Is not null | Не пустое | Возвращаются все записи, у которых значение поля не равно null. | Вызовы, где поле Источник не равно ‘null’: [Originator] IS NOT NULL |
После ввода запроса SQL нажмите кнопку Сохранить. Условия фильтрации будут применены к представлению.
Кроме указанных выше ключевых слов запроса, возможно использование группировки данных, сортировки данных, объединения данных различных таблиц.
Пример
Рассмотрим пример создания SQL запроса. Например, нам надо отфильтровать все междугородние и международные вызовы и, которые имеют длительность более 10 минут или их стоимость больше 5 евро.
Чтобы отобрать Междугородние вызовы следует написать SQL запрос:
([СallType] = 4)
Чтобы добавить условие, связанное с международными вызовами следует написать следующее:
([CallType] = 4 OR [CallType] = 5)
Теперь добавим условие фильтрации, связанное с длительностью вызова:
([CallType] = 4 OR [CallType] = 5) AND CallDuration > '00:10:00'
Следующим шагом мы добавим информацию о стоимости вызовов:
([CallType] = 4 OR [CallType] = 5) AND ([CallDuration] > '00:10:00' OR [Cost] > 5)
Щелкните по кнопке Сохранить, чтобы применить этот фильтр, и вы увидите в представлении вызовы, которые удовлетворяют созданному SQL запросу.
Возможны другие варианты написания SQL запроса по данному заданию. Полностью аналогичным будет следующий запрос:
((CallType = 4 OR CallType = 5) AND CallDuration > '00:10:00') OR ((CallType = 4 OR CallType = 5) AND Cost > 5)
или
CallType IN (4,5) AND (CallDuration > '00:10:00' OR Cost > 5)
Последний вариант SQL запроса является наиболее компактным. Он использует оператор IN (Любое из), который для данного примера означает, что поле Тип вызова состоит из списка: 4 – соответствует междугородним вызовам и 5 – международным.
Пользователь, который хорошо знаком с синтаксисом SQL запросов может сразу ввести требуемый запрос.