Business Intelligence и Transact-SQL

До версии SQL Server 2000 язык Transact-SQL не выполнял достаточно хорошо сложный анализ данных. С самого начала Transact-SQL предоставлял некоторые агрегатные функции, которые могли быть использованы для вычисления простых обобщений данных, а также предложение group by, которое позволяло выполнять элементарную группировку данных. SQL Server 2000 был первой версией SQL Server, которая предоставляла сложные возможности анализа данных, такие как оператор cube и предложение top. SQL Server 2005 значительно расширил эти возможности, введя функции упорядочения и некоторые реляционные операторы. SQL Server 2008 вводит стандартизованный синтаксис для операторов rollup и cube, а также для группировки наборов, что позволяет выполнять вычисления для групп некоторых различных наборов по столбцам группирования.

Оценить
(1 голос)
Пробовали ли вы когда-нибудь писать запрос на Transact-SQL, который вычисляет изменения значений в процентах между двумя последними кварталами? Или запрос, который выполняет накапливаемое суммирование либо скользящее агрегирование? Если вы пытались это делать, то знаете, насколько сложные эти задачи. Сегодня вам больше не нужно их выполнять. Стандарт SQL: 1999 был приспособлен к набору функций оперативного анализа данных (Online Analytical Processing, OLAP), которые позволяют просто выполнять эти вычисления, так же как и множество других вычислений, которые являются слишком сложными в реализации. Эта часть стандарта SQL называется SQL/OLAP. SQL/OLAP включает все функции и операторы, которые используются для анализа данных. Применение функций OLAP для…
Оценить
(0 голоса)
Наиболее важным расширением языка Transact-SQL, связанным с анализом данных, является конструкция окна. Окно (в связи с SQL/OLAP) определяет разделенный набор строк, к которому применяется функция. Количество строк, принадлежащих окну, динамически определяется в зависимости от спецификаций пользователя. Конструкция окна задается с использованием предложения over. Стандартизованная конструкция окна имеет три основные части: ♦ разбиение на разделы; ♦ упорядочение; ♦ группирование агрегатов. Прежде чем вы начнете разбираться в конструкции окна и ее частей, взгляните на таблицы, которые будут использоваться в примерах. В примере 24.1 создается таблица project_dept, показанная в табл. 24.1, которая используется В этом разделе для демонстрации расширений Transact-SQL, связанных с SQL/OLAP.…
Оценить
(0 голоса)
Разбиение на разделы позволяет разделить результирующий набор запроса на группы, так что каждая строка раздела будет отображаться отдельно. Если разделы не заданы, то весь набор строк будет принадлежать одному разделу. Хотя разбиение на разделы и выглядит как группирование с использованием предложения group by, это не является тем же самым. Предложение group by сворачивает строки раздела в одну строку, в то время как разбиение на разделы в конструкции окна просто организует строки в группы без их сворачивания. Следующие два примера показывают различия между разбиением на разделы с использованием конструкции окна и группированием при использовании предложения group by. Предположим, что вы хотите…
Оценить
(0 голоса)
Упорядочение в конструкции окна похоже на упорядочение в запросе. Во-первых, вы используете предложение order by для задания конкретного порядка строк в результирующем наборе. Во-вторых, это предложение включает список ключей сортировки и указывает, в каком порядке они должны быть отсортированы - по возрастанию или по убыванию значений. Наиболее важным отличием является то, что порядок внутри окна применим только к каждому разделу. SQL Server 2008 не поддерживает упорядочение внутри конструкции окна для агрегатных функций. Другими словами, предложение over для агрегатных функций может содержать только предложение partition by. (Назло этому ограничению упорядочение внутри окна работает для функций ранжирования.) Пример 24.5, который поддерживается стандартом…
Оценить
(0 голоса)
Transact-SQL расширяет предложение group by следующими операторами: ♦ cube; ♦ rollup; ♦ grouping sets. Предложение group by также имеет дополнительную функцию grouping, которая будет рассмотрена после только что упомянутых операторов.
Оценить
(0 голоса)
В этом разделе будут рассмотрены различия между группированием с использованием предложения group by и группированием с применением group by в комбинации с оператором cube. Основное отличие заключается в том, что предложение group by определяет один или более столбцов в качестве группы, где все строки в любой группе имеют те же значения для тех же столбцов, cube и rollup предоставляют дополнительные итоговые строки для группируемых данных. Эти итоговые строки также называются многомерными итогами. Следующие два примера демонстрируют эти отличия. В примере 24.8 применяется предложение group by для группирования строк таблицы projectdept на основе двух критериев: столбцов deptname и empcnt.   Основным…
Оценить
(0 голоса)
В отличие от оператора cube, который возвращает любую возможную комбинацию групп и итоговых строк, иерархия групп, использующая rollup, определена в порядке, в котором заданы группируемые столбцы. В примере 24.11 показано использование оператора rollup.    
Оценить
(0 голоса)
Как вы уже знаете, значение null используется в комбинации cube и rollup для задания заменителя значений ненужных столбцов. В этом случае нельзя отличить null в отношении cube и rollup от значения null. Transact-SQL поддерживает стандартизованную функцию grouping, которая позволяет разрешить проблему с двусмысленностью null. Функция grouping возвращает 1, если null в результирующем наборе связан с cube или rollup, и 0, если он представляет группу значений null. В примере 24.12 показано использование функции grouping:   Если вы посмотрите на сгруппированный столбец (gr), то увидите, что в нем присутствуют 0 и 1. Значение 1 указывает, что соответствующий null в столбце empcnt задает…
Оценить
(0 голоса)
Группирование наборов является расширением предложения group by, которое дает возможность пользователям определять несколько групп в одном и том же запросе. Вы используете оператор grouping sets для реализации сгруппированных наборов. В примере 24.13 показано использование этого оператора.     Как вы можете видеть в результирующем наборе примера 24.13, запрос применяет две различные группировки для вычисления суммы бюджетов: вначале выполняется комбинация значений столбцов dept_name и empcnt, а затем используются значения одного столбца deptname. Вы можете использовать серию сгруппированных наборов, заменяя операторы rollup и cube. Например, следующая серия сгруппированных наборов group by grouping sets  ((dept_name, emp_cnt),   (dept_name),   ()) эквивалентна предложению rollup: group by…
Оценить
(1 голос)
Transact-SQL поддерживает две группы функций, которые являются функциями запросов OLAP: ♦ функции упорядочения; ♦ статистические агрегатные функции. Следующие подразделы описывают эти функции.
«ПерваяПредыдущая12СледующаяПоследняя»
Навигация

Авторизация



© 2021 serversql.ru. Все права защищены.