Como usar limitada buscar em sql
Video: Curso de SQL Server para Iniciantes (Aula 15) - Select com Group By
Conteúdo
Sempre que o padrão SQL ISO / IEC é alterado, geralmente é para expandir as capacidades da linguagem. Isto é uma coisa boa. No entanto, às vezes, quando você faz uma tal mudança não pode antecipar todas as possíveis consequências. Isso aconteceu com a adição de limitada BUSCAR capacidade em SQL: 2008.
A idéia da limitada BUSCAR é que, embora a SELECIONAR declaração pode retornar um número indeterminado de linhas, talvez você só se preocupa com os três ou talvez o top ten. Em conformidade com esta idéia, SQL: sintaxe mostrada no exemplo a seguir 2,008 acrescentou:
Vendedor SELECT, AVG (TotalSale) DE SalesGroup POR SalespersonORDER pelo AVG (TotalSale) DESCFETCH PRIMEIRA 3 linhas só-
Isso parece bem. Você deseja ver que seus três principais vendedores estão em termos de aqueles que estão vendendo principalmente produtos de alto preço. No entanto, há um pequeno problema com isso. E se três pessoas são amarradas com a mesma venda total médio, abaixo das duas melhores vendedores? Apenas um dos três será devolvido. Qual? É indeterminado.
Indeterminação é intolerável a qualquer pessoa banco de dados auto-respeito pelo que esta situação foi corrigida no SQL: 2011. Nova sintaxe foi adicionado para incluir laços, desta maneira:
Vendedor de selecionar, AVG (TotalSale) FROM SalesGroup POR SalespersonORDER pelo AVG (TotalSale) DESCFETCH primeiros 3 linhas com TIES-
Agora, o resultado é determinado completamente: Se houver um empate, você obtém todas as linhas amarradas. Como antes, se você deixar de fora a COM LAÇOS modificador, o resultado é indeterminado.
Um par de melhorias adicionais foram feitas para a limitada BUSCAR capacidade em SQL: 2011.
Primeiro, os percentuais são tratados, bem como apenas um número específico de linhas. Considere o seguinte exemplo:
Vendedor SELECT, AVG (TotalSale) DE SalesGroup POR SalespersonORDER pelo AVG (TotalSale) DESCFETCH primeiras linhas 10 por cento só-
É concebível que pode haver um problema com laços ao lidar com percentagens, assim como não é com um simples número de registros, de modo que o COM LAÇOS sintaxe também podem ser usados aqui. Você pode incluir laços ou não, dependendo do que você quer em qualquer situação particular.
Em segundo lugar, suponhamos que você não quer que os três primeiros ou os dez por cento, mas em vez disso quer a segunda por cento três ou segunda dez? Talvez você queira pular diretamente para algum ponto no fundo do conjunto de resultados. SQL: 2011 cobre esta situação também. O código seria semelhante a este:
Video: 11 - T-SQL - ORDER BY - Consultas com ordenação de Colunas - SQL Server
Vendedor SELECT, AVG (TotalSale) DE SalesGroup POR SalespersonORDER pelo AVG (TotalSale) DESCOFFSET 3 ROWSFETCH PRÓXIMO 3 linhas só-
o OFFSET palavra-chave informa quantas linhas a serem saltadas antes de buscar. A palavra-chave PRÓXIMO especifica que as linhas a serem buscadas são os imediatamente após o deslocamento. Agora os vendedores com o quarto, quinto e sexto maior venda média total é retornado.
Como você pode ver, sem a COM LAÇOS sintaxe, ainda há um problema de indeterminação. Se o terceiro, quarto, quinto e vendedores estão vinculados, é indeterminado que dois serão incluídas neste segundo lote e que uma vai ter sido incluído no primeiro lote.
Pode ser o melhor para evitar o uso da capacidade de buscar limitado. É muito provável que entregar resultados enganosos.