Crie um relatório manualmente usando consultas SQL

Crie um relatório manualmente usando consultas SQL

Crie um relatório manualmente usando consultas SQL 1
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Nos dois artigos anteriores, praticamos consultas SQL e passamos por mais alguns exemplos. Hoje, usaremos consultas SQL e criaremos um relatório do zero. Começaremos da consulta mais simples possível e terminaremos com a consulta retornando os dados reais do relatório.

Modelo de Dados e algumas reflexões gerais

Como sempre, teremos que dar uma olhada no modelo de dados que estamos usando. Se você é analista de dados, algumas das tarefas esperadas são: pegue os dados do banco de dados, crie um relatório, tire conclusões a partir dos dados do relatório. Portanto, você pode esperar que tenha um modelo de dados à sua disposição.

Consultas SQL - o modelo de dados que usaremos no artigo

Nesse modelo de dados, você deve identificar as tabelas que contêm os dados necessários no relatório. Além disso, você precisa ter certeza de como essas tabelas estão relacionadas. Você deve se perguntar:

  • Quais tabelas são dicionários e quais estão sendo preenchidas com dados (por usuários / clientes ou por algum processo automatizado)? -> Você está interessado em analisar dados de tabelas que estão sendo preenchidas com os dados enquanto os dicionários estão aqui para exibir informações na tela (quando os dados estão sendo inseridos + usou uma categoria nos relatórios)

  • A tabela X sempre tem um registro relacionado na tabela Y? -> Talvez sempre exista um registro na tabela relacionada, mas esse nem sempre é o caso. Isso será importante quando você decidir usar INNER JOIN (se você sempre tiver um registro relacionado) ou LEFT JOIN (se você nem sempre tiver um registro relacionado) ao ingressar nessas duas tabelas

Neste artigo, usaremos dados de apenas três tabelas: funcionário, cliente e ligação.

O objetivo deste artigo é criar um relatório com todos os pares de funcionários e clientes e o número de chamadas que cada funcionário e cliente teve. Também devemos retornar um par em que não houve chamadas e ter 0 como valor na coluna relacionada.

Exemplo 1 do SQL – Verificar dados

Começaremos com as duas consultas SQL simples para verificar o que está em nossas tabelas (funcionário e cliente). Essas são duas tabelas que precisaremos criar todas as nossas categorias de relatórios (precisamos de todas as combinações de funcionários e clientes).

tabelas com os dados das categorias de relatório

Eu acho que não há necessidade de explicar consultas SQL ou seus resultados.

Há apenas três coisas que vale a pena mencionar aqui:

  • Como precisamos de todos os pares no relatório final, precisamos ter 8 categorias de relatório (2 funcionários * 4 clientes = 8 pares diferentes)

  • Nossas tabelas são pequenas e têm apenas algumas linhas. Portanto, poderíamos listar facilmente todos os nossos funcionários e clientes. Em cenários do mundo real, quando você precisa criar um relatório (e categorias de relatório), pode esperar um número significativamente maior de valores nas tabelas usadas para criar categorias de relatório. Nesse caso, você pode limitar o resultado para ver apenas, por exemplo, TOP 10 linhas e COUNT linhas em todas as tabelas incluídas (número de linhas na 1st tabela * número de linhas nos 2nd tabela = número total de categorias de relatório)

  • As duas tabelas usadas para criar categorias não são catálogos / dicionários reais, mas listas. Ainda assim, não esperamos alterações de dados nessas tabelas com a mesma frequência que em outras tabelas

# 2 Exemplo de SQL – Criar categorias de relatório (produto cartesiano)

Agora sabemos o que está em nossas tabelas e estamos prontos para criar categorias de relatórios. Como precisamos combinar todas as linhas de uma tabela com todas as linhas de outra tabela, criaremos um produto cartesiano dessas duas tabelas. Podemos fazer isso de forma simples e mostraremos duas maneiras comuns de fazer isso.

Vamos dar uma olhada no resultado. Como esperado, as duas consultas SQL retornaram todas as combinações, no total, 8 delas.

categorias de relatório

A primeira consulta fez isso sem usar JOIN, enquanto no 2nd consulta, usamos CROSS JOIN.

Para a primeira consulta, o importante a ser mencionado é que queríamos um produto cartesiano. Portanto, acabamos de listar as tabelas e não usamos nenhuma condição de associação na parte WHERE da consulta. Fizemos aqui com um propósito. Ainda assim, na maioria dos casos, você deseja relacionar tabelas usando uma condição de junção, e o produto cartesiano é o resultado de um erro (não usando a condição). Uso o produto cartesiano apenas em situações semelhantes a esta (quando preciso criar um relatório e categorias de relatório).

A segunda consulta usou o CROSS JOIN. Isso é muito útil se você planeja adicionar mais algumas tabelas à sua consulta usando qualquer outra JOIN (especialmente LEFT JOIN), porque você pode simplesmente continuar adicionando junções após esta.

Exemplo 3 do SQL – Obter dados do relatório

O próximo passo na criação de um relatório é coletar os dados reais de que precisamos. No nosso caso, queremos contar todos os contatos que os funcionários mantiveram com os clientes. Simplesmente usaremos os IDs de ambas as tabelas, agruparemos por eles e contaremos o número de chamadas. Você pode ler mais sobre funções agregadas (incluindo COUNT) aqui.

dados do relatório

Nossa consulta retornou todos os pares de employee_id e customer_id que possuem pelo menos uma chamada. No nosso caso, devido aos dados em nosso banco de dados, cada funcionário e cliente teve pelo menos 1 chamada e, portanto, o resultado final possui 8 linhas. Ainda assim, isso acontece apenas com a natureza dos dados em nosso banco de dados e em outros cenários; você poderia facilmente ter, por exemplo, apenas 5 pares retornados como resultado dessa consulta.

# 4 Exemplo de SQL – Combine categorias e dados de relatório

A última coisa que precisamos fazer para criar um relatório é combinar categorias de relatório com os dados do relatório. Simplesmente usaremos as consultas SQL criadas em “Exemplo 2 do SQL – Criar categorias de relatórios (produto cartesiano)” e “Exemplo 3 do SQL – Obter dados do relatório”.

Usaremos essas duas consultas SQL como uma subconsulta para a consulta principal. Observe que essas subconsultas funcionam como tabelas “padrão”, para que você possa vê-las como em caixas pretas. E o que há nessas tabelas? Bem, eles “contêm” as consultas de resultados criadas nas 2 partes anteriores retornadas.

Consultas SQL - relatório final

Vamos passar um tempo e comentar o resultado retornado:

  • Usamos anteriormente 2 consultas SQL criadas como subconsultas. Acabei de copiá-los e colocá-los dentro de “(” e “)” e forneci nomes alternativos – report_categories e report_data. Agora, eu os tratarei como qualquer outra tabela com nomes de colunas, conforme definido nessas consultas SQL

  • Essas duas subconsultas (tabelas) são unidas usando LEFT JOIN. Isso é muito importante porque precisamos de todas as categorias retornadas no resultado final. Caso não haja dados de relatório relacionados para uma categoria, ainda teremos nossa categoria no resultado final e veremos que esse par de funcionário e cliente não recebeu chamadas

  • Ao ingressar, ingressei em dois critérios: employee_id e customer_id. Isso é necessário porque esse par é um valor único nos dois lados (lembre-se de quando estamos juntando tabelas, estamos usando chaves primárias e estrangeiras)

Por favor, mostre aqui a parte “Salvar resultados da consulta SQL no Excel”.

  • Nota: Quando você precisar criar um relatório, lembre-se sempre de quais informações os usuários de negócios precisam para tomar uma decisão. Verifique se primeiro consultou os requisitos de relatório.

Em nosso exemplo, queríamos ter todas as categorias possíveis, independentemente do fato de terem ou não valor relacionado. Geralmente, esse é o caso quando você deseja ver que não houve desempenho em uma determinada categoria. Caso não exista categoria no relatório, um usuário comercial pode nem estar ciente de que existe uma categoria e não pode tomar as decisões comerciais necessárias.

Conclusão

Em resumo, criamos um relatório do zero. Embora tenhamos começado com uma consulta muito simples, a consulta final exibe informações comerciais mais relevantes. Sugiro que você aplique esse procedimento toda vez que precisar criar um relatório, pelo menos ao criar um complexo.

Nos próximos artigos, avançaremos mais algumas etapas e mostraremos como trabalhar com funções de datas e horas, como combinar resultados de consultas SQL com o Excel e também como criar tabelas dinâmicas diretamente no SQL Server.

Índice

Emil Drkusic
Últimas mensagens de Emil Drkusic (ver todos)

Leia Também  Quer aprender como eu uso o kit primeiro respondedor?