Evangelizando o SQL
Conteúdos Práticos
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
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
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
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
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
Vamos de mais um exemplo
Quantos Produtos eu tenho, onde o custo base é de 0.33?
Select* from Produtos
Where CustoBase = 0.33
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.
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
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 🧐
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
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
SELECT Produto,
SUM(Quantidade) as Quantidade_Total
FROM Vendas
GROUP BY Produto
HAVING SUM(Quantidade) > 1000
ORDER BY Quantidade_Total ASC
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
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
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 👨💻