Windows Framing
Windows Framing em inglês, é a definição de uma janela de linhas numa consulta SQL onde uma função de agregação pode ser aplicada.
A cláusula de framing
especifica exatamente quais linhas dentro da partição devem ser consideradas para cada cálculo de agregação.
O framing é particularmente útil quando temos dados empatados, ou seja, linhas com o mesmo valor na coluna de ordenação. Sem especificar o tipo de framing, o SQL Server usa por padrão RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
, o que pode não ser o comportamento desejado.
Exemplo
Se se tivermos várias linhas com o mesmo valor de mês do pedido
, todas essas linhas seriam incluídas na janela de agregação, o que poderia levar a resultados inesperados. Ao especificar ROWS
, garantimos que apenas as linhas fisicamente anteriores à linha atual sejam incluídas, evitando assim a agregação de linhas com valores idênticos de mês do pedido
.
Além disso, o uso explícito de ROWS
pode melhorar o desempenho da consulta, pois o comportamento padrão RANGE
pode exigir o uso de um buffer em disco, o que é mais exigente em termos de recursos.
É muito importante frisar que ao escrever consultas T-SQL que utilizam funções de janela, é importante considerar cuidadosamente se o framing padrão corresponde às necessidades da consulta ou se um framing específico ROWS
ou RANGE
deve ser utilizado para obter os resultados corretos e otimizar o desempenho.