Você está na página 1de 26

Banco de Dados II

SQL Bsica

Mdulo 02

Banco de Dados II Prof Tavares 1


Mundo
Real

Requisitos Coleta/Especificao Requisitos


de Dados de Requisitos Funcionais

Projeto Conceitual Anlise Funcional

Projeto Lgico Projeto Funcional

Projeto Fsico Programao

Programa
Programa de
de de
dados SGBD Programa
e aplicao
aplicao de
deBD
BD
regras aplicao
Banco de Dados I Prof Tavares
Banco de Dados II Prof Tavares 3
SQL / COMANDO SELECT
Utilizando a Clusula DISTINCT

A clusula DISTINCT elimina repeties de valores em


relao a uma coluna.
Consulta: Quais os pases dos clientes?
select country
from customers;
... compare com..
select distinct country
from customers;

Banco de Dados II Prof Tavares 4


SQL / COMANDO SELECT

A clusula GROUP BY organiza os dados em grupos.


A clusula HAVING realiza as restries das linhas resultantes da
mesma forma que a clusula WHERE o faz em um SELECT.
Podemos igualmente continuar com a clusula WHERE
selecionando as condies da seleo.
SELECT <nome da(s) coluna(s)>
FROM <tabela>
WHERE condio(es)>
GROUP BY <nome da(s) coluna(s)>;
HAVING <condio(es)>;

Banco de Dados II Prof Tavares 5


SQL / COMANDO SELECT

Consulta: Quais os pases dos clientes?


select country
from customers
group by country

Banco de Dados II Prof Tavares 6


SQL / COMANDO SELECT

Consulta: Listar as cidades, estados e pases onde esto


localizados os escritrios (OFFICES).
select city, state, country
from offices
group by city, state, country

Banco de Dados II Prof Tavares 7


SQL / COMANDO SELECT

Consulta: Listar as cidades e estados onde esto localizados os


escritrios (OFFICES).

select * Mostra o 1 registro de cada grupo

from products
group by productline (???????)

Banco de Dados II Prof Tavares 8


SQL / COMANDO SELECT

Consulta: Listar as cidades, estados e pases onde esto


localizados os escritrios (OFFICES). Considerar somente as
cidades com estados cadastrados.
select city, state, country
from offices
where state is not null
group by city, state, country

Banco de Dados II Prof Tavares 9


SQL / COMANDO SELECT

Utilizando Funes de Agregao sobre Conjuntos

As funes de agregao resultam sempre em uma nova


coluna no resultado da pesquisa.
Buscando Mximos e Mnimos (MAX, MIN),
Consulta: Mostrar o menor e o maior preo da tabela produto
(PRODUCT).
select MIN(buyPrice), MAX(buyPrice)
from products

Banco de Dados II Prof Tavares 10


SQL / COMANDO SELECT

Utilizando Funes de Agregao sobre Conjuntos

Totalizando dos valores de Colunas (SUM)


Consulta: Mostrar o somatrio total dos pagamentos
(PAYMENTS).

select sum(amount)
from payments

Banco de Dados II Prof Tavares 11


SQL / COMANDO SELECT

Utilizando Funes de Agregao sobre Conjuntos

Calculando Mdias (AVG)


Consulta: Listar a mdia dos pagamentos.

select format(avg(amount),2)
from payments

Banco de Dados II Prof Tavares 12


SQL / COMANDO SELECT

Utilizando Funes de Agregao sobre Conjuntos

Contando os Registros (COUNT)


Consulta: Quantos empregados esto cadastrados?

select count(*)
from employees

Banco de Dados II Prof Tavares 13


SQL / COMANDO SELECT

Utilizando Funes de Agregao sobre Conjuntos

Contando os Registros (COUNT)


Consulta: Quantos empregados representantes de vendas
(Sales Rep) esto cadastrados?

select count(jobtitle)
from employees
where jobtitle in (Sales Rep')

Banco de Dados II Prof Tavares 14


SQL / COMANDO SELECT

Utilizando Funes de Agregao sobre Conjuntos

Contando os Registros (COUNT).


Consulta: Determinar a quantidade de clientes e a quantidade
de estados cadastrados.
select COUNT(customerNumber) as Qte_Clientes,
COUNT(state) as Qte_Estados
from CUSTOMERS

Banco de Dados II Prof Tavares 15


SQL / COMANDO SELECT

Utilizando Funes de Agregao sobre Conjuntos

Contando os Registros (COUNT)


Consulta: Determinar quantos pases possuem clientes.

select count(distinct country) as Qte_Paises


from customers;

Banco de Dados II Prof Tavares 16


SQL / COMANDO SELECT

Consulta: Valores diversos relativos aos produtos.

select MAX(buyPrice), MIN(buyPrice),


AVG(buyPrice), SUM(quantityInStock)
from products

Banco de Dados II Prof Tavares 17


SQL / COMANDO SELECT

GROUP BY com funes de agregao

Consulta: Listar a quantidade de clientes por pas.

select country as PAIS, count(*) as QTE_CLIENTES


from customers
group by country

Banco de Dados II Prof Tavares 18


SQL / COMANDO SELECT

Consulta: Listar o total pago por cada cliente, cujo total acima
de U$ 200.000,00.

select customerNumber as CLIENTE,


sum(amount) as TOTAL_VENDAS
from payments
group by customerNumber
having sum(amount) > 200000

Banco de Dados II Prof Tavares 19


SQL / COMANDO SELECT
Consulta: Listar os principais valores mximo preo, mnimo
preo, mdia de preo e soma de estoque - por linha de
produtos (productLine). Restrio: valor mdio acima de $40.

select productLine, MAX(buyPrice),MIN(buyPrice),


AVG(buyPrice) AS Valor_medio,
SUM(quantityInStock) as Quantidade_Estoque
from products
group by productLine
having Valor_medio > 40
Banco de Dados II Prof Tavares 20
SQL / COMANDO SELECT

Utilizando Funes de Date/Time

select now(), curdate(), curtime();

select YEAR(NOW()), MONTH(NOW()),

DAY(NOW()), HOUR(NOW()),

MINUTE(NOW()), SECOND(NOW());

select DATE_ADD('2012-01-31', INTERVAL 5 DAY);

select DATE_SUB('2012-01-31', INTERVAL 2 MONTH);

Banco de Dados II Prof Tavares 21


SQL / COMANDO SELECT

Consulta: Listar somente os pedidos emitidos entre 15 Set 2003 e a


data atual.
SELECT * FROM orders
WHERE orderDate BETWEEN '2003-09-15' AND CURDATE()
ORDER BY orderDate

Banco de Dados II Prof Tavares 22


SQL / COMANDO SELECT

Consulta: Listar somente os pedidos emitidos em 2004.


SELECT * FROM orders
WHERE YEAR(orderDate) = 2004
ORDER BY orderDate

Banco de Dados II Prof Tavares 23


SQL / COMANDO SELECT

Consulta: Listar somente os pedidos emitidos no dia e ms atual.


SELECT *
FROM orders
WHERE MONTH(orderDate) = MONTH(CURDATE())
AND DAY(orderDate) = DAY(CURDATE())

Banco de Dados II Prof Tavares 24


SQL / COMANDO SELECT

Consulta: Listar os dias entre o registro do pedido e o envio do


mesmo.
SELECT orderNumber, orderDate,
TIMESTAMPDIFF(DAY, orderDate, shippedDate)
AS Dias_Processando
FROM orders
WHERE shippedDate is not null
ORDER BY orderDate

Banco de Dados II Prof Tavares 25


Fim

Banco de Dados II Prof Tavares 26

Você também pode gostar