![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
Аналитические функции в Oracle (Часть 3)20.01.2010 10:23
Виды аналических функцийВ качестве базовой в аналитической функции могут быть указаны традиционные для Oracle статистические (агрегатные, то есть обобщающие) функции COUNT, MIN, MAX, SUM, AVG и другие ("стандартные агрегатные функции" по документации). Примеры приводились выше. Можно обратить внимание на то, что аналитические функции со статистическими агрегатами разумно обрабатывают NULL: SELECT ename, hiredate, sal, Ниже приводится полный перечень аналитических функций в версии СУБД 9.2:
Звездочкой помечены функции, допускающие использование плавающего интервала расчета. Некоторые из этих функций рассматриваются ниже. Функции ранжированияФункции ранжирования позволяют "раздать" строкам "места" в зависимости от имеющихся в них значениях. Некоторые примеры: SELECT ename, sal, (раздать сотрудникам места в порядке убывания/возрастания зарплат) Функции подсчета долейФункции подсчета долей позволяют одной SQL-операцией получить для каждой строки ее "вес" в таблице в соответствии с ее значениями. Некоторые примеры: SELECT ename, sal, RATIO_TO_REPORT(sal) OVER () AS salshare FROM emp; (доли сотрудников в общей сумме зарплат) Пример выдачи доли сотрудников с меньшей или равной зарплатой, чем у "текущего": SELECT job, ename, sal, JOB ENAME SAL CUME_DIST
14 rows selected. (видно, что три четверти клерков имеют зарплату, меньше чем ADAMS). Проранжировать эту выдачу по доле сотрудников в группе можно функцией PERCENT_RANK: SELECT job, ename, sal, JOB ENAME SAL CUME_DIST PCT_RANK
14 rows selected. Процентный ранг отсчитывается от 0 и изменяется до 1. Некоторые жизненные примеры аналитических запросовДля типов сегментов, более других расходующих дисковое пространство, выдать главных пользователей, ответственных за такой расходПостроить такой запрос на основе таблицы SYS.DBA_SEGMENTS, можно пошагово. Шаг 1. Выдать типы сегментов в БД, общий объем памяти на диске для каждого типа и долю числа типов с равным или меньшим общим объемом памяти: SELECT segment_type, Шаг 2. Отобрать 40% "наиболее расточительных" по дисковой памяти типов: SELECT * Шаг 3. Отобрать пользователей, занимающих первые пять мест по расходованию памяти среди "наиболее расточительных" типов сегментов: SELECT * Выдать список периодов наиболее активного переключения журнальных файлов БДСписок переключений журнальных файлов хранится в динамической таблице v$loghist. Ниже приводится один из вариантов запроса. var treshold number SELECT Пояснения.
Взято отсоюда http://www.interface.ru/fset.asp?Url=/oracle/anal-itiv.htm&anchor=01 и вот небольщой пример WITH tabl AS ( SELECT 'первый день' den, '1первая неделя' ned FROM dual UNION ALL SELECT 'второй день' den, '1первая неделя' ned FROM dual UNION ALL SELECT 'третий день' den, '1первая неделя' ned FROM dual UNION ALL SELECT 'первый день' den, '2вторая неделя' ned FROM dual UNION ALL SELECT 'второй день' den, '2вторая неделя' ned FROM dual UNION ALL SELECT 'третий день' den, '2вторая неделя' ned FROM dual UNION ALL SELECT 'первый день' den, '3третья неделя' ned FROM dual UNION ALL SELECT 'второй день' den, '3третья неделя' ned FROM dual UNION ALL SELECT 'третий день' den, '3третья неделя' ned FROM dual ) SELECT dense_rank() over (ORDER BY ned) dr,row_number() over ( PARTITION BY ned ORDER BY ned) rn, den, ned FROM tabl Ссылки по теме |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |