Você já ouviu falar do operador CUBE?

O dataholic Abraão Vasconcelos compartilhou com a gente seu conhecimento sobre o operador CUBE. Bora conferir??

 

Você já ouviu falar do operador CUBE no SQL Server? Para entender o que esse operador faz, vamos começar criando um sistema bastante simples de locação de carros.

 

create table carro ( car_cod int not null primary key identity(1,1), car_marca varchar(50) not null, car_modelo varchar(50) not null ) insert into carro values (‘Toyota’, ‘Modelo 1’), (‘BMW’, ‘Modelo 3’), (‘Mercedes-Benz’, ‘Modelo 2’)

create table cliente( cli_id int not null primary key identity(1,1), cli_nome varchar(1000) not null ) insert into cliente values (‘Cliente A’), (‘Cliente B’), (‘Cliente C’),(‘Cliente D’), (‘Cliente E’), (‘Cliente F’), (‘Cliente G’)

create table locacao( loc_cod int not null primary key identity(1,1), loc_car_cod int not null references carro(car_cod), loc_cli_cod int not null references cliente(cli_id), loc_dt date not null )

 

insert into locacao values

(1, 3,’2019-04-21′),(2, 3, ‘2019-05-31’),(3, 1, ‘2015-03-25’), (2, 4, ‘2016-04-15’),(3, 5, ‘2013-02-09’),(1, 2, ‘2014-12-04’),(3, 2, ‘2014-07-01’), (3, 2, ‘2019-07-11′), (3,4,’2019-01-10′), (1,3,’2014-06-14′), (1,3,’2014-09-08′), (3,4,’2015-02-18′), (3,1,’2015-12-17′),(1,3,’2013-11-15’)

 

Agora imagine que nós precisamos montar um relatório capaz de agrupar todos os nossos dados por ANO e Marca. O objetivo deste relatório é trazer o número total de vezes que os carros de uma determinada Marca foram alugados em cada ano. Neste momento não nos interessa saber o modelo do carro.

 
 
 
 
 

Conseguimos montar este relatório utilizando a cláusula GROUP BY. Agora imagine que precisamos exibir em nosso relatório o número total de locações para cada marca, esta nova informação considera todos os anos. E para deixar o nosso relatório mais completo, mostraremos o total de locações por ano, ou seja, não importa a marca, queremos saber o total em cada ano.

 

Vamos resolver este problema pegando a consulta anterior e colocando as colunas do group by dentro do operador cube. Também vamos comentar a cláusula order by.

 
 
 
 
 

Veja que as linhas com os valores que representam os totais mostram NULL para Ano e Marca. Vamos tratar estas duas colunas usando expressões CASE.

 
 
 

E agora conseguimos ver o nosso relatório completo com a ajuda do CUBE! Não esqueça de digitar todos estes códigos no seu ambiente de testes!

 

Gostou desse conteúdo? Deixe seu comentário para gente saber e compartilhar mais conteúdos com esse tema 😊

Compartilhar no facebook
Compartilhar no twitter
Compartilhar no linkedin
Compartilhar no whatsapp
Compartilhar no email

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts recentes

Família ISO 27001

A ISO 27001 é a principal norma pela qual uma organização obtém a certificação empresarial em gestão de segurança da informação. Para explicar melhor sobre

Leia mais »