Здесь ORDER_BY_CLAUSE — сортировка, колонка, по которой будет отсортирован результат;
OVER PART — сегмент разделения данных.
Разберем на примере — создадим таблицу и заполним ее данными.
Запрос для примера:
Рисунок 185. Запрос к CL_PHONES: использование LISTAGG
Второй пример.
Создадим таблицу по следующему запросу:
Рисунок 186. Запрос к DEMO1: использование LISTAGG
Также LISTAGG может работать как аналитическая функция, то есть объединять данные в строку по заданному сегменту (PARTITION).
Рисунок 187. Запрос к MAN: использование LISTAGG c PARTITION
Как использовать функцию LISTAGG совместно с UNION?
Да, такое возможно. Вот пример:
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите материалы данного шага.
2. Выведите из таблицы MAN первую букву имени человека (FIRSTNAME) и через точку с запятой все имена (FIRSTNAME), начинающиеся с этой буквы.
3. Выведите из таблицы CITY первую букву города (CITYNAME) и через точку с запятой все города (CITYNAME), начинающиеся с этой буквы.
В ORACLE существует возможность работать с JSON-форматом. JSON — специальный формат обмена данными, основанный на текстовом формате. Как и многие другие текстовые форматы, JSON используется при обмене данными между веб-сервисами.
Проще всего пояснить синтаксис работы JSON в ORACLE на примерах.
Создадим таблицу INFO_USER_V:
В ORACLE 12 существует специальный тип ограничений, чтобы добавлять в колонку только данные JSON-формата и исключить ошибки, связанные с нарушением структуры JSON.
Добавим такую колонку к нашей таблице:
Добавляем записи:
Попробуем извлечь данные из таблиц, которые мы создали.
Рисунок 188. Запрос c использованием JSON_VALUE, JSON_DATA
Рисунок 189. Запрос c использованием JSON_VALUE, JSON_DATA
Еще один способ:
Рисунок 190. Запрос c использованием JSON_TABLE
Рисунок 191. Запрос c использованием JSON_TABLE, JSON_DATA
Работа с JSON возможна только в версии ORACLE начиная с 12c.
Можно ли создать представление на основание таблицы json?
Пример создания представления:
Контрольные вопросы и задания для самостоятельного выполнения
1. Повторите запросы из данного шага.
2. Разберитесь, как работает JSON в ORACLE 12C.
3. Создайте таблицу, где в одной из колонок будут храниться данные формата JSON, вторая колонка — идентификатор.
4. Создайте для данного поля ограничение на корректность формата JSON.
5. Добавьте в колонку JSON данные JSON,»
{
«num»: «123324324»,
«NAME»: «Max»,
«property»: {«COLOR»: «red», «MARK»: «bmw»
— }
6. Извлеките цвет и марку из колонки JSON с помощью SQL-запроса.
Шаг 68. Высший пилотаж SQL. MODEL
Оператор MODEL в ORACLE SQL позволяет определенным образом эмулировать работу с электронными таблицами. Оператор MODEL имеет сложный синтаксис, но вместе с тем предоставляет более гибкие способы работы с данными.
Оператор SQL MODEL позволяет рассматривать результат запроса как многомерный массив.
При этом в SQL задаем оси измерения этого массива (идентифицируем данные по осям).
Использование MODEL также позволит нам подводить промежуточные и общие итоги с применением агрегатных функций.
Синтаксис
Примеры
Подготовим данные.
Таблица (ручки), где PRT — партия поставки, CNT — количество в данной поставке, COLOR — цвет ручек в поставке (red, green, black).
Заполним таблицу данными (партии 1, 2, 3, 4, 7 с различным количеством ручек, разных цветов).
Напишем запрос, демонстрирующий работу MODEL.
Рисунок 192. Результаты запроса: использование MODEL
Немного изменим запрос, добавим сумму.
Рисунок 193. Результаты запроса: использование MODEL
Более интересный пример: подводятся итоги по трем партиям ручек 1…3.
Еще более интересно: дополнительные итоги по цвету ручек!
Рисунок 194. Результаты запроса: использование MODEL и SUM
Кроме суммы, можно использовать и другие агрегатные функции, например AVG.
Рисунок 195. Результаты запроса: использование MODEL
• Совместно с командой MODEL нельзя использовать предложение PARTITION BY.
• В MODEL подзапрос не может быть соотнесен с внешним запросом.
• При использовании MODEL имена колонок должны быть уникальными.
• Все ссылки на ячейки в MODEL должны быть ссылками на отдельные ячейки.
Читать дальше
Конец ознакомительного отрывка
Купить книгу