Образовательный портал Claw.ru
Всё для учебы, работы и отдыха
» Шпаргалки, рефераты, курсовые
» Сочинения и изложения
» Конспекты и лекции
» Энциклопедии

Некоторые примеры использования

Как уже говорилось, практически все, что можно сделать с помощью аналитических функций, можно сделать и без них, но с их использованием требуемого эффекта можно добиться проще и, зачастую, оптимальнее...

Поскольку теперь появилась возможность нумеровать записи в выборке, можно воспользоваться этим для постраничной выдачи результата. Запрос будет выглядеть примерно так:

WITH Numbered

(

 SELECT ROW_NUMBER() OVER(ORDER BY name) N_Row, *

  FROM sysobjects

)

SELECT * FROM Numbered WHERE N_Row between @First AND @Last

Как ни странно, этот запрос будет выполняться примерно в два раза быстрее классического:

EXECUTE ('SELECT * FROM

      (SELECT TOP ' + @Count + ' * FROM

       (SELECT TOP ' + @Last + ' *

        FROM sysobjects ORDER BY name ASC

       ) SO1

       ORDER BY name DESC) SO2

      ORDER BY name')

Так что сбылась еще одна мечта, об эффективной и простой постраничной выборке.. :)

Еще один пример, где использование аналитических функций может быть и удобным, и эффективным. Нередко требуется вывести, например, два самых крупных заказа для каждого клиента. Может случиться так, что заказов с максимальной суммой окажется больше двух. Для случая, когда заказов должно быть именно два, запрос может выглядеть так:

WITH Ranked as

(

 SELECT *,

  Row_Number() OVER (PARTITION BY ID_Customer

           ORDER BY amount DESC) [rank]


Рекомендуем скачать другие рефераты по теме: казахстан реферат, курсовики скачать бесплатно.


Категории:




Предыдущая страница реферата | 1  2  3  4  5  6  7 |


Поделитесь этой записью или добавьте в закладки

   



Рефераты от А до Я


Полезные заметки

  •