Новость из категории: Информация

SQL Server: упаковываем интервалы с приоритетами. Шаг 1

Содержание:
1. Постановка задачи;
2. Шаг 1 (Вы читаете данный раздел);
3. Шаг 2, 3;
4. Шаг 4 и оптимизация решения с использованием APPLY.
SQL Server: упаковываем интервалы с приоритетами. Шаг 1

В коде, представленном ниже, реализован шаг 1, а в таблице 2 вы найдете результаты этого шага.

SQL Server: упаковываем интервалы с приоритетами. Шаг 1
Шаг 1

Помимо выражений для вычисления ptybitval и ptybitmap, к которым я перейду чуть позже, остальная часть кода на этом шаге реализует метод упаковки с использованием функции ROW N UMBER, описанной в Packing Intervals (http://blogs.solidq.com/en/sqlserver/packing-intervals/). Если вы не знакомы с этим методом упаковки, то лучше всего прочитать статью, прежде чем продолжать.

SQL Server: упаковываем интервалы с приоритетами. Шаг 1
Результат шага 1

Этот шаг упаковывает пересекающиеся интервалы с одинаковыми пользователем и приоритетом, возвращая начальные и конечные точки этих упакованных интервалов в отдельных строках. Вы можете определить выходные данные на этом шаге для User2 графически в средней части рисунка 1. Напомню, что программный код в обобщенном табличном выражении C1 возвращает начало и конец событий во входных интервалах в отдельных строках. В программном коде событие начала отмечается значением +1 как тип события (именованный тип столбца), то есть данное событие увеличивает число активных интервалов, а событие завершения отмечается значением — 1 (оно уменьшает число активных интервалов). Номера строк используются для счетчика событий начала (столбец с именем s) и счетчика событий завершения (столбец с именем е). Эти счетчики фиксируют, сколько событий данного типа произошло до текущего события. Значения NULL используются как местозаполнители в столбце s для событий завершения и в столбце е для событий начала. Программный код в C1 объединяет события начала и завершения, формируя единую последовательность событий.

Код в обобщенном табличном выражении C2 использует номера строк для определения объединенного значения счетчика событий в хронологическом порядке (столбец с именем se). Величину se можно рассматривать как указатель на число событий обоих типов (начала и завершения), произошедших до текущего события.


Читать дальше...

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх