Skip to content
/ SQL Public

Acompanhamento de uma playlist, com os principais comando do SQL e exemplos práticos.

Notifications You must be signed in to change notification settings

rafaelxkr/SQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 

Repository files navigation

SQL

Criei esse material com base na playlist do Canal do Youtube DEV Aprender, todos os exemplos seguem os videos das aulas da playlist com a resolução de todos exercícios.

*O canal do Youtube DEV Aprender não é de minha autoria

Instalando SQL Server Management Studio (SSMS)

Instalando

Restaurando Banco de Dados

Baixe o banco de dados com o link abaixo e importe para o SSMS Download Banco de Dados

Restaurando

Comandos SQL

SELECT

--SELECT coluna1,coluna2 FROM Tabela

SELECT * FROM person.Person; --EXEMPLO1
SELECT Title FROM person.Person; --EXEMPLO2
SELECT FirstName,LastName FROM person.Person --EXEMPLO3

DISTINCT

--SELECT DISTINCT coluna1, coluna2 FROM tabela
SELECT DISTINCT  LastName FROM Person.Person

WHERE

OPERADORES DESCRICAO
= IGUAL
> MAIOR QUE
< MENOR QUE
>= MAIOR QUE OU IGUAL
<= MENOR QUE OU IGUAL
<> DIFERENTE DE
AND OPERADOR LÓGICO E
OR OPERADOR LÓGICO OU
LIKE CONTEM TEXTO ONDE "%" É O CARACTER CORINGA
/*SELECT coluna1,coluna2,coluna_n
FROM tabela
WHERE condicao
*/
SELECT *
FROM Person.Person
WHERE LastName = 'miller' and FirstName = 'anna';

SELECT *
FROM Production.Product
WHERE Name  like '%BLACK%'

SELECT *
FROM Production.Product
WHERE ListPrice > 2000 and ListPrice < 3000

--Desafio 1 = Trazer lista dos nomes das peças com peso maior que 500 e menor que 700
SELECT Name
FROM Production.Product
WHERE Weight > 500 and Weight < 700

--Desafio 2 = Todas pessoas que são casadas e são assalaridas 
SELECT *
FROM HumanResources.Employee
WHERE MaritalStatus = 'M' and SalariedFlag = 1

--Desafio 3 = Encontrar o email Peter Krebs

-- Encontrar Peter Krebs  (Tabela = Person.Person)
SELECT BusinessEntityID
FROM  Person.Person
WHERE FirstName = 'Peter'and LastName = 'Krebs'

-- Encontrar Email(Tabela = Person.EmailAddress) com 'BusinessEntityID' de Peter Krebs  
SELECT * 
FROM Person.EmailAddress
WHERE BusinessEntityID = '26'

-- Encontrar Email(Tabela = Person.EmailAddress) de Peter Krebs  (Tabela = Person.Person)
SELECT EmailAddress
FROM  Person.Person,Person.EmailAddress
WHERE FirstName = 'Peter'and LastName = 'Krebs' and Person.Person.BusinessEntityID = Person.EmailAddress.BusinessEntityID

COUNT

--quantidade de titulos diferentes
SELECT count(DISTINCT title)
FROM Person.Person

/*DESAFIO 1
Quantos produtos temos cadastrados em nossa tabela de produtos
*/
SELECT count(*)
FROM Production.Product

/*DESAFIO 2
Quantos tamanhos de produtos temos cadastrados em nossa tabela de produtos
*/
SELECT count( Size)
FROM Production.Product

TOP

-- SELECT TOP 10 * FROM TABELA
SELECT TOP 10 * FROM Production.Product

ORDER BY

-- SELECT * FROM TABELA ORDER BY coluna1 asc/desc
SELECT * FROM person.Person ORDER BY FirstName asc                --EXEMPLO1
SELECT * FROM person.Person ORDER BY FirstName asc, LastName desc --EXEMPLO2

/* DESAFIO
Obter o ProductId dos 10 produtos mais caros cadastrados no sistema,
listando do mais caro para o mais barato*/
SELECT TOP 10 Name, ListPrice FROM Production.Product ORDER BY ListPrice DESC

/* DESAFIO2
Obter o nome e numero do produto dos produtos que tem o ProductID entre 1~4 */
SELECT TOP 4 NAME, ProductID FROM Production.Product ORDER BY ProductID ASC

BETWEEN

O Between é usado para encontrar valor entre um valor mínimo e máximo

Coluna1 BETWEEN valor_minimo AND valor_maximo é a mesma coisa que Coluna1 >= valor_minimo AND Coluna1 <= valor_maximo

-- SELECT * FROM TABELA WHERE coluna1 BETWEEN 10 AND 50
SELECT * FROM Production.Product WHERE ListPrice BETWEEN 1000 AND 1500

IN

O operador IN é utilizado junto com Where faz um filtro utilizando a lista de valores informados

--SELECT * FROM Tabela WHERE Coluna1 IN (valor1,valor2, ...)
--IN (SELECT coluna1 FROM Tabela) -- Sub Query = pesquisa o resultado da query

SELECT * FROM Person.Person WHERE BusinessEntityID IN (2,7,13) -- filtra somente 2,7 e 13

SELECT * FROM Person.Person WHERE BusinessEntityID NOT IN (2,7,13) -- remove 2,7 e 13

LIKE

O operador LIKE é utilizado para pesquisar se contém um texto, começa ou termina: Esse operador não é case sensitive, ou seja, ele não diferencia maiúsculo de minúsculo.

Pesquisa Significado Resultado
Where Coluna LIKE '%ra' Termina com 'ra' Amora
Where Coluna LIKE '%ra%' Contém 'ra' Camarada
Where Coluna LIKE 'ra%' Começa com 'ra' Rasteiro
Where Coluna LIKE '%ra_' Termina com 'ra' + um caracter no final Acelerar
Where Coluna LIKE '_ra%' Começa com 'ra' + um caracter no inicio Brasil
Where Coluna NOT LIKE '%ra' Não termina com 'ra' Adulterar
Where Coluna NOT LIKE '%ra%' Não contém 'ra' Azeitona
Where Coluna NOT LIKE 'ra%' Não começa 'ra' Abraço
--SELECT * FROM Tabela WHERE Coluna LIKE '%ra'

SELECT * FROM Person.Person WHERE FirstName LIKE '%ra' --Termina com 'ra'
SELECT * FROM Person.Person WHERE FirstName LIKE '%ra%'--Contém 'ra'
SELECT * FROM Person.Person WHERE FirstName LIKE 'ra%' --Começa com 'ra'

SELECT * FROM Person.Person WHERE FirstName LIKE '%ra_' --Termina com 'ra' + um caracter no final
SELECT * FROM Person.Person WHERE FirstName LIKE '_ra%' --Começa com 'ra' + um caracter no inicio

SELECT * FROM Person.Person WHERE FirstName NOT LIKE '%ra' --Não termina com 'ra'
SELECT * FROM Person.Person WHERE FirstName NOT LIKE '%ra%'--Não contém 'ra'
SELECT * FROM Person.Person WHERE FirstName NOT LIKE 'ra%' --Não começa com 'ra'

Desafio Fundamentos SQL

    1. Quantos Produtos temos cadastrados com valor acima de R$1.500 reias?
SELECT COUNT(ListPrice)
FROM Production.Product
WHERE ListPrice > 1500
    1. Quantas pessoas temos com o sobrenome que inicia com a letra P ?
SELECT COUNT(LastName)
FROM Person.Person
WHERE LastName LIKE 'P%'
    1. Em quantas cidades unicas estão cadastrados nossos clientes?
SELECT  COUNT(DISTINCT City)
FROM Person.Address
    1. Quais são as cidades unicas que temos cadastradas no nosso sistema?
SELECT  DISTINCT City
FROM Person.Address
    1. Quantos produtos vermelhos temos entre 500 e 1000 dolares?
SELECT COUNT(ListPrice)
FROM Production.Product
WHERE ListPrice BETWEEN 500 AND 1000
AND Color = 'RED'
    1. Quantos produtos cadastrados tem o nome 'road' no nome deles?
SELECT COUNT(Name)
FROM Production.Product
WHERE Name LIKE '%road%'

Agregação MIN, MAX, SUM e AVG

Funções de agregação basicamente agregam ou combinam dados de uma tabela em 1 resultado só

-- Soma das 10 primeiras linhas
SELECT TOP 10 SUM(LineTotal) as "Soma"
FROM Sales.SalesOrderDetail

-- Valor minimo das 10 primeiras linhas
SELECT TOP 10 MIN(LineTotal) as "Minimo"
FROM Sales.SalesOrderDetail

-- Valor maximo das 10 primeiras linhas
SELECT TOP 10 MAX(LineTotal) as "Maximo"
FROM Sales.SalesOrderDetail

-- Media das 10 primeiras linhas
SELECT TOP 10 AVG(LineTotal) as "Media"
FROM Sales.SalesOrderDetail

GROUP BY

O Group By basicamente divide o resultado da sua pesquisa em grupos para cada grupo você pode adicionar um função de agregação, por exemplo: -calcular soma de itens -contar o número de itens naquele grupo

--SELECT coluna1,funçãoAgregação(Coluna2) FROM nomeTabela GROUP BY coluna1
--É possivel escolher o nome da coluna de agregação colocando AS "Nome da Coluna"

SELECT SpecialOfferID, SUM(SpecialOfferID) AS "SOMA"
FROM SALES.SalesOrderDetail
GROUP BY SpecialOfferID;

--Quantidade de cada produto vendido até hoje
SELECT ProductId, COUNT(ProductId) AS "CONTAGEM"
FROM Sales.SalesOrderDetail
GROUP BY ProductID

-- Quantidade de cada nome que temos no banco de dados
SELECT FirstName, COUNT(FirstName) AS "CONTAGEM"
FROM Person.Person
GROUP BY FirstName

--Na tabela Production.Product eu quero saber a média de preços dos produtos que são prata(silver)
SELECT Color, AVG(ListPrice) AS PRECO
FROM Production.Product
WHERE Color = 'Silver'
GROUP BY Color

------------------DESAFIO!!!!!------------------------

--1 - Eu preciso saber quantas pessoas tem o mesmo MiddleName agrupadas por MiddleName
SELECT MiddleName, COUNT(MiddleName) AS "CONTAGEM"
FROM Person.Person
GROUP BY MiddleName

--2 - Eu preciso saber em média qual é quantidade(quantity) cada produto é vendido na loja agrupado por produto.
SELECT ProductID, AVG(OrderQty) as "Media"
FROM SALES.SalesOrderDetail
GROUP BY ProductID

--3 - Eu quero saber quais foram as 10 vendas que no total tiveram os maiores valores de venda(line total)
--por produto do maior valor para o menor
SELECT TOP 10 ProductID, MAX(LineTotal) AS "MAXIMO"
FROM Sales.SalesOrderDetail
GROUP BY ProductID
ORDER BY MAXIMO DESC

--4 - Eu preciso saber quantos produtos e qual quantidade média de produtos que temos
--cadastrados nas nossas ordens de serviço (WorkerOrder), agrupados por productId

SELECT ProductID, COUNT(ProductID) as "QUANTIDADE", AVG(OrderQty) as "MEDIA"
FROM Production.WorkOrder
GROUP BY ProductID

HEAVING

About

Acompanhamento de uma playlist, com os principais comando do SQL e exemplos práticos.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published