Hесложный способ перевернуть запрос с группировкой
Hесложный способ перевернуть запрос с группировкой
-- условимся, что перечень значений свойств был ограничен
-- для примера создадим таблицу со следующими полями
-- 1) Название
-- 2) Цвет
-- по условиям задачи у нас сеть конечное количество цветов красный , зеленый , синий
create table t1(tid number,tname varchar2(20),tprop varchar2(20));
Как работают RollUp и Cube?
Подари,продай, обменяй - множество недорогих и отличных вещей объявления вместо AVITO - ВКонтакте
-- rollup и cube специальные групповые опepации oracle
-- применяются начиная с версии 8i
-- очень удобно использовать rollup cube при подведении итогов
-- некоторые из операций могут быть заменены га аналитический sql
-- давайте разберем на примерах
Случайность в PL SQL - DBMS_RANDOM
Для работы со случайными значениями в PL SQL используется пакет DBMS_RANDOM
DBMS_RANDOM пакет содержит встроенный генератор случайных чисел
Модель безопасности
Этот пакет должен быть установлен как SYS . По умолчанию в пакете инициализируется с текущим именем пользователя, текущее время с точностью до секунды, и на нынешней сессии. Oracle рекомендует пользователям, которым необходимо выполнять этот пакет должны быть EXECUTE привилегии , и не должны полагаться на PUBLIC EXECUTE привилегии.
• DBMS_RANDOM.RANDOM возвращает целые [-2 ^ 31, 2 ^ 31).
• DBMS_RANDOM.VALUE возвращает чисела из [0,1) с 38 цифр точности.
DBMS_RANDOM может быть явно инициализирован, но не нужно специально инициализировать каждый раз перед вызовом генератора случайных чисел. Будет автоматически инициализировать с даты, идентификатор пользователя и идентификатор процесса, если явной инициализации не выполняется.
Как убить сессию запросом Oracle 11g Release 11.2
следующий запрос убивает и вешает сессию наглухо
select x.id, rtrim(xmlagg(xmlelement("a",x.recno||';')).extract('//a/text()').getStringVal(),';') as recno, min(recno) from (select 1 as id, 101 as recno from dual union all select 2 as id, 102 as recno from dual union all select 3 as id, 103 as recno from dual union all select 3 as id, 123 as recno from dual union all select 4 as id, 104 as recno from dual union all select 5 as id, 105 as recno from dual) x group by x.id order by min(recno);
Задача с валютами
Исходные данные
-- есть таблица в с номером валюты, датой заполнения курса, курсом валюты
-- оператор вводит курс валюты, когда он поменялся , то есть если несколько дней подряд одинаковый курс - то, в таблице будет единственное значение курса на дату изменения
-- необходимо вывести курс валюты на заданную дату , по каждой валюте
-- если на данную дату нет курса тогда выводится курс на последнюю дату, если в заданную дату курс менялся несколько раз , то надо вывести все изменения
-- Подготовим данные для примера
-- создадим таблицу с валютами\