Postagens

Mostrando postagens de junho, 2021

Window Functions: Rank() e Dense_rank()

Imagem
Olá pessoal, espero que estejam todos muito bem! Dando continuidade a série de post sobre Window Functions, hoje irei falar sobre duas funções que são muito úteis no dia a dia, principalmente de quem trabalha com  BI, são funções de ranqueamento de dados.  Função RANK() : Essa função é um pouco parecida com a função Row_number(), mas com uma diferença crucial, ela retorna o mesmo "id" em casos de empate e os ids podem NÃO ser um sequencial. Como assim? Veja esse exemplo:  Vamos ao cenário que será utilizado nos exemplos. Temos uma tabela de departamento, onde temos os departamentos, funcionários e seus salários e queremos fazer algumas consultas. Para esse exemplo, quero ver um rank de quem ganha mais por departamento. Código utlizado: select  *  ,rnk = RANK() over(partition by department order by salary desc) from #Employees Resultado: Reparem na coluna "RNK", ela faz um ranqueamento dos maiores salários particionado pela coluna "department", o IMPORTANTE

Window Functions: Row_number()

Imagem
 Olá pessoal, tudo certo com vocês? Há algum tempo estava pensando em escrever sobre as Window Fuctions (Funções de Janela) do SQL-SERVER, pois vejo que muita gente desconhece sobre essa maravilhosa função do SQL e não existe muito material em português. Antes de começar a introdução no assunto, vou deixar uma dica de livro do qual eu li para construir essa série de artigos que estarei postando aqui, gostaria também de deixar um artigo da lenda do Tuning o Fabiano Amorim, que escreveu sobre esse tema em 2011 no simple-talk. Livro: https://www.amazon.com.br/T-SQL-Window-Functions-Itzik-Ben-Gan/dp/0135861446 Artigo do Fabiano: https://www.red-gate.com/simple-talk/sql/learn-sql-server/window-functions-in-sql-server/ Bem, gostaria de começar explicando o que afinal são essas Window functions?  São funções que se aplicam a um conjunto de linhas e para poder entender melhor sobre isso, recomendo uma leitura sobre o set-based, um tipo de pensamento que não é fácil de ter, mas que quando é ent