Evangelizando o SQL

Conteúdos Práticos

Mazoelle Oliveira
7 min readOct 30, 2023
Imagem Feita pela Autora

Este artigo tem como objetivo ensinar algumas funções do SQL que foram essenciais para a realização dos exercícios práticos do projeto Evangelizando o SQL.
Ao dominar essas funções, vocês serão capazes de resolver os exercícios que detalharei ao longo dos próximos artigos.

Para quem não está familiarizado, o projeto Evangelizando o SQL, consistiu em um conjunto de 8 lives gravadas.
Trata-se de uma iniciativa voluntária direcionada à comunidade, onde destacados profissionais do mercado compartilharam seus conhecimentos sobre SQL. Estas lives, repletas de conteúdos valiosos, estão disponíveis no YouTube.

Segue o Link

https://www.youtube.com/watch?v=fltjmaeXbfQ&t=4s

Acessando a Base de Dados para os Exercícios

As informações e conteúdos apresentados nas lives, podem ser encontrados no GitHub do projeto. Deixarei o link

https://github.com/wlcamargo/evangelizando_sql

No repositório, ao acessar a seção “projeto final”, você notará que as respostas dos exercícios estarão disponíveis, no entanto, recomendo fortemente que, antes de consultar as soluções, você tente resolver os exercícios por conta própria.

Para começar, siga o passo a passo: ao abrir a opção de baixar o script no GitHub, atente-se ao local indicado pela seta, é ali que você deverá fazer o download. Após baixar, abra e execute o script para configurar sua base de dados e iniciar os testes práticos. Uma representação visual desse processo pode ser vista na figura abaixo

imagem Feita pela Autora

SELECT TOP

O Que você faria se quisesse, ver apenas alguns registros da tabela em específico? no nosso exemplo vamos utilizar a tabela clientes

Quero que retorne para mim apenas 10 registros desta tabela, neste caso vou especificar as colunas Cliente e Nome

Na prática

select top 10 cliente, nome
from clientes
Resultado

Usamos o Select top , pois ele é usado para especificar o número de registros a retornar em uma consulta e também utilizado para tabelas com muitos registros .
Outra funcionalidade do Select top é que podemos utilizar, através de porcentagem

Digamos que eu quisesse trazer apenas 10% dos nomes dos clientes na tabela de clientes

Na prática

select top 10 percent nome
from clientes
Resultado

Uso do Alias

Nome alternativo que você pode dar a uma coluna ou tabela é frequentemente referido como “alias” ou “apelido”. Veremos muito essa utilização ao fazermos os joins.

Na Prática

Na tabela de Vendas, eu preciso retornar a quantidade de vendas, mas não quero que o resultado venha somente como “quantidade”, como está quando consultamos a tabela original. A fim de demonstrar os resultados, podemos modificar nossas colunas.

select Quantidade as Quantidade_de_Vendas
from Vendas
Resultado

Comando Where

A cláusula WHERE é usada em consultas para ajudar a especificar os dados que serão consultados e manipulados. Ela serve para filtrar dados em uma tabela, permitindo que visualizemos apenas as informações desejadas.

Então vamos a estrutura:

SELECT colunas FROM tabela WHERE coluna = valor

Na Prática

Então aqui por exemplo. eu quero saber quais produtos pertecem a marca 241

Select*from Produtos
Where Marca= 241
Resultado

Vamos de mais um exemplo

Quantos Produtos eu tenho, onde o custo base é de 0.33?

Select* from Produtos
Where CustoBase = 0.33
Resultado

Comando Groupy By

Usada para agrupar linhas que têm os mesmos valores em colunas especificadas. Geralmente é usado com funções de agregação. E se você não sabe o que são funções de agregação, é quando, por exemplo, queremos ver o somatório geral de quantidade de vendas, tirar a média, verificar o maior valor, menor valor, contagem de vendas. Mas isso explicarei melhor nos próximos tópicos. Com esses exemplos, você começará a entender a lógica de Função de Agregação x GroupyBy

Na Prática

Suponha que você queira somar a Quantidade Total Vendida de cada Produto

SELECT Produto, SUM(Quantidade) as QuantidadeTotal
FROM Vendas
GROUP BY Produtos

Como vocês podem notar, eu usei um SUM , função agregada de soma, onde disse que queria a Quantidade Total de Vendas e vou agrupar por produtos.

Resultado

E se agora quiséssemos filtrar um produto específico? Como faríamos? Nesse caso, quero filtrar apenas o somatório da Quantidade_Total dos produtos que sejam iguais a 2585.

Select Produto,
sum(Quantidade) as QuantidadeTotal
from Vendas
where Produto = 2585
group by produto
Resultado

Note que aqui combinamos a função Where com GroupBy.
Usamos a função de agregação para fazermos o Somatório da Quantidade. Em seguida, usamos o Where, para filtrarmos o produto que queremos em específico, e por fim, o GroupBy . Sim, Leitores, o Where sempre vem antes do GroupBy.

Olhem o que acontece quando mudamos 🧐

Imagem Capturada pela Autora

O erro na sua consulta é devido à ordem incorreta das cláusulas.
O comando Where deve vir antes da cláusula Group by . A ordem correta das cláusulas é crucial para a sintaxe correta das consultas SQL.

Comando Having

Essa pode te confundir um pouco com o comando Where , pois ambas são usadas para filtrar resultados, mas o where é usado para filtrar as linhas antes da agregação de dados

Já o Comando Having 🧐

É aplicado após a agregação de dados. A cláusula Having é usada para filtrar os resultados depois de terem sido agrupados pela cláusula Group by

Agora, suponhamos que agora eu queira saber apenas a relação dos Produtos com Quantidade Total Maior que 1000

Na Prática

SELECT Produto,
SUM(Quantidade) as Quantidade_Total
FROM Vendas
GROUP BY Produto
HAVING SUM(Quantidade) > 1000
Resultado

Comando Order By

A cláusula Order By em SQL, é usada para ordenar os resultados de uma consulta com base em uma ou mais colunas. Ela permite que você especifique a ordem crescente , ou decrescente (DESC) para cada coluna.

Na Prática

Suponhamos que eu queira ordenar os Produtos pela Quantidade_Total>1000 em ordem crescente

SELECT Produto,
SUM(Quantidade) as Quantidade_Total
FROM Vendas
GROUP BY Produto
HAVING SUM(Quantidade) > 1000
ORDER BY Quantidade_Total
Resultado
SELECT Produto,
SUM(Quantidade) as Quantidade_Total
FROM Vendas
GROUP BY Produto
HAVING SUM(Quantidade) > 1000
ORDER BY Quantidade_Total ASC
Resultado

Nota: No caso de colocar em Ordem Crescente, você não precisa usar o Asc , fica ao seu critério, mas se neste caso a ordem for inversa, ou seja, em ordem Decrescente é obrigatório usar o Desc.

Na Prática

SELECT Produto,
SUM(Quantidade) as Quantidade_Total
FROM Vendas
GROUP BY Produto
HAVING SUM(Quantidade) > 1000
ORDER BY Quantidade_Total desc
Resultado

Se não usar o Desc, ele fica na ordem Crescente

SELECT Produto,
SUM(Quantidade) as Quantidade_Total
FROM Vendas
GROUP BY Produto
HAVING SUM(Quantidade) > 1000
ORDER BY Quantidade_Total
Resultado

O que elas tem em comum?

1. Manipulação de Resultados: Todas essas cláusulas são usadas para manipular os resultados retornados por uma consulta SQL de acordo com as necessidades específicas.

2. Filtragem de Dados: WHERE e HAVING são específicas para filtrar dados, seja antes ou depois de um agrupamento.

3. Uso em Conjunto: Essas cláusulas muitas vezes são usadas em conjunto para realizar consultas mais complexas. Por exemplo, é comum ver uma consulta que use WHERE para filtrar dados, GROUP BY para agrupá-los, HAVING para filtrar os grupos e ORDER BY para ordenar o resultado final.

4. Fluxo de Processamento: Quando usadas juntas, estas cláusulas têm uma ordem específica de processamento:

· Primeiro, a cláusula WHERE filtra os registros.

· Depois, GROUP BY agrupa os registros filtrados.

· Em seguida, HAVING filtra os grupos.

· Finalmente, ORDER BY ordena os resultados.

Fonte: ChatGPT

Para este Artigo não ficar muito longo no Próximo, Abordarei os temas: Funções de Agregações e Joins , para enfim falar do Primeiro exercício Proposto

Até a próxima Leitores 👨‍💻

--

--

Mazoelle Oliveira

Formada em Administração de Empresas, estou em Transição de Carreira e falarei sobre Dados, Banco de Dados e Análise de Dados