четверг, 20 февраля 2014 г.
понедельник, 10 февраля 2014 г.
Запросы с агрегатами в СУБД Oracle
В этой статье я собрал запросы, иллюстрирующие типичное использование агрегатных функций. Я начинаю с рассмотрения общих агрегатов (totals), когда агрегатные функции применяются ко всей выборке. Затем рассматриваются частные агрегаты, или субагрегаты (subtotals), получаемые при помощи GROUP BY, и совместное использование общих и частных агрегатов в запросах. Приводятся примеры запросов для получения доли или процента частных агрегатов в общих. В заключение, даны примеры использования HAVING.
вторник, 28 января 2014 г.
Сводные таблицы в Oracle 11g
Предположим, нам нужно узнать количество таблиц, вью и триггеров у пользователей БД SYS, SYSTEM и SCOTT. Первым приходит в голову такое решение:
SQL> SELECT owner, object_type, count(*)
FROM all_objects
WHERE object_type IN ('TABLE', 'VIEW', 'TRIGGER')
AND owner IN ('SYS', 'SYSTEM', 'SCOTT')
GROUP BY owner, object_type
ORDER BY owner, object_type;
OWNER OBJECT_TYPE COUNT(*)
-------------------- -------------------- -----------
SCOTT TABLE 4
SYS TABLE 998
SYS TRIGGER 10
SYS VIEW 3865
SYSTEM TABLE 157
SYSTEM TRIGGER 2
SYSTEM VIEW 12
7 rows selected
Что ж, мы получили ответ на наш вопрос. Но результат не нагляден. Куда нагляднее был бы такой ответ:
OBJECT_TYPE SYS SYSTEM SCOTT
-------------------- ---------- ---------- ----------
TRIGGER 10 2 0
TABLE 998 157 4
VIEW 3865 12 0
воскресенье, 19 января 2014 г.
Считаем до 1000... на пальцах
Как показано в предыдущих статьях, можно вести счет и запись чисел не только привычными всем десятками, но и "однннадцатками" (Всемирный заговор девятипалых), пятерками или шестерками (До скольки можно посчитать на пальцах?). Иными словами, помимо привычной нам десятичной системы счисления, где счет идет на десятки, существуют и другие системы счисления, где в качестве основания выбрано не десять, а другое число.
При этом число, выбранное в качестве основания системы счисления, определяет, сколько разных значений может принимать один разряд числа, тем самым задавая вес разряда в данной системе счисления.
воскресенье, 12 января 2014 г.
Пользовательские агрегатные функции в Oracle
СУБД Oracle, начиная с версии 8, предоставляет ряд программных интерфейсов для создания расширений (extensibility interfaces). Реализации этих интерфейсов могут быть написаны пользователями СУБД. В частности, это интерфейсы для создания расширений индексирования, расширений стоимостного оптимизатора, пользовательских агрегатных функций.
На базе этих программных интерфейсов компанией Oracle созданы и распространяются вместе с СУБД такие функциональные расширения, как Oracle Text, Oracle Multimedia и Oracle Spatial. Эти расширения Oracle именует data cartridges, а соответствующая технология называется Oracle Data Cartriges (ODC).
Теперь, обрисовав контекст, приступаю к созданию пользовательской агрегатной функции.
