43
Revisão / Exercícios Prof. Márcio Bueno {bd2tarde,bd2noited}@marciobueno.com

Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

  • Upload
    lekhanh

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Revisão / Exercícios

Prof. Márcio Bueno{bd2tarde,bd2noited}@marciobueno.com

Page 2: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Especificando Campos

Apelidos de campo

SELECT “DEI" + "-UNICAP" as Centro,

Universidade = “UNICAP"

Expressões como campos

Podem estar presentes na lista de

campos, no ORDER BY ou no GROUP

BY

Banco de Dados II - Márcio Bueno 2/43

Page 3: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Cláusulas do SELECT

SELECT <lista_de_campos>

FROM tabela1 [,tabela2,tabela3...]

<tipo> JOIN <tabelax> ON <criterio_associacao>Informa critérios de junção de tabelas

WHERE <condição_booleana>Especifica critérios para filtragem de dados

GROUP BY <lista_de_campos>Agrupamento de dados.

ORDER BY <lista_de_campos [ASC/DESC]>Altera a ordem dos registros

Banco de Dados II - Márcio Bueno 3/43

Page 4: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Cláusula WHERE

Operadores

OR, AND, NOT

>, <, >=, <=, =, <>

| (bitwise OR), & (bitwise AND), ^ (bitwise XOR)

LIKE

IN

EXISTS

BETWEEN

Uso de parênteses

Banco de Dados II - Márcio Bueno 4/43

Page 5: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Cláusula WHERE

Cuidados com NULL e NOT NULL Operador IS NULL

NULL = NULL é falso! NULL não é igual a nada.

Configurações SET para comportamento com NULL

Comparando com constantes Inteiro – pode colocar entre parênteses

String – entre apóstrofos

Data – entre apóstrofos, no formato ‘dd/mm/yyyy hh:nn:ss’ Ano pode conter 2 dígitos

Banco de Dados II - Márcio Bueno 5/43

Page 6: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

WHERE Simples

USE Northwind

SELECT

employeeid,

name = firstname + ' ' + lastname,

title

FROM dbo.employees

WHERE employeeid = 5

Banco de Dados II - Márcio Bueno 6/43

Page 7: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Usando Like

USE Northwind

SELECT

companyname

FROM dbo.customers

WHERE companyname LIKE '%Restaurant%'

OR companyname LIKE '_en'

OR companyname LIKE '[CK]%'

OR companyname LIKE '[S-V]%'

OR companyname LIKE 'M[^c]%'

Banco de Dados II - Márcio Bueno 7/43

Page 8: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Faixa de valores

USE Northwind

SELECT

productname,

unitprice

FROM dbo.products

WHERE unitprice BETWEEN 10 AND 20

Banco de Dados II - Márcio Bueno 8/43

Page 9: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Lista de valores

USE Northwind

SELECT

companyname,

country

FROM dbo.suppliers

WHERE country IN

('Japan','Italy')

Pode ser outro SELECT retornando 1 campo

Banco de Dados II - Márcio Bueno 9/43

Page 10: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Valores desconhecidos

Usar IS NULL depois do campo

Ou então IS NOT NULLUse Northwind

SELECT

companyname,

fax

FROM dbo.suppliers

WHERE fax IS NULL

Banco de Dados II - Márcio Bueno 10/43

Page 11: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Ordenando Dados

Use Northwind

SELECT

productid,

productname,

categoryid,

unitprice

FROM dbo.products

ORDER BY categoryid ASC, unitprice DESC

Banco de Dados II - Márcio Bueno 11/43

Page 12: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Eliminando valores duplicados

Use Northwind

SELECT DISTINCT

country

FROM dbo.suppliers

ORDER BY country

Banco de Dados II - Márcio Bueno 12/43

Page 13: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exemplo de SELECT de 1

Tabela

USE Northwind

SELECT

convert(VARCHAR(10),productid) + ' – ' + productname as 'Nome Produto',

UnitsInStock as 'Em estoque',

ReorderLevel as 'Nível Crítico',

Diferenca = (ReorderLevel - UnitsInStock)

FROM dbo.products

WHERE UnitsInStock < Reorderlevel

ORDER BY (ReorderLevel - UnitsInStock) DESC

Banco de Dados II - Márcio Bueno 13/43

Page 14: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Retorne os nomes dos produtos que começam com as letras a, d, de m a z, ordenados por nome.

CREATE TABLE Products(

ProductID int IDENTITY(1,1) NOT NULL,

ProductName nvarchar(40) NOT NULL,

SupplierID int NULL,

CategoryID int NULL,

QuantityPerUnit nvarchar(20) NULL,

UnitPrice money NULL,

UnitsInStock smallint NULL,

UnitsOnOrder smallint NULL,

ReorderLevel smallint NULL,

Discontinued bit NOT NULL,

PRIMARY KEY (ProductID ASC)

)

Banco de Dados II - Márcio Bueno 14

Page 15: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Retorne os nomes dos fornecedores que estão sem homepage informada na tabela.

CREATE TABLE Suppliers (

SupplierID int IDENTITY(1,1) NOT NULL,

CompanyName nvarchar(40) NOT NULL,

ContactName nvarchar(30) NULL,

ContactTitle nvarchar(30) NULL,

Address nvarchar(60) NULL,

City nvarchar(15) NULL,

Region nvarchar(15) NULL,

PostalCode nvarchar(10) NULL,

Country nvarchar(15) NULL,

Phone nvarchar(24) NULL,

Fax nvarchar(24) NULL,

HomePage ntext NULL,

PRIMARY KEY (SupplierID)

)Banco de Dados II - Márcio Bueno 15

Page 16: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Mostre a lista de países dos clientes da empresa (tabela Customers), sem repetições

CREATE TABLE Customers(

CustomerID nchar(5) NOT NULL,

CompanyName nvarchar(40) NOT NULL,

ContactName nvarchar(30) NULL,

ContactTitle nvarchar(30) NULL,

Address nvarchar(60) NULL,

City nvarchar(15) NULL,

Region nvarchar(15) NULL,

PostalCode nvarchar(10) NULL,

Country nvarchar(15) NULL,

Phone nvarchar(24) NULL,

Fax nvarchar(24) NULL,

PRIMARY KEY (CustomerID)

)

Banco de Dados II - Márcio Bueno 16

Page 17: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Mostre os nomes dos clientes que não fizeram pedidos.

CREATE TABLE Orders(

OrderID int IDENTITY(1,1) NOT NULL,

CustomerID nchar(5) NULL,

EmployeeID int NULL,

OrderDate datetime NULL,

RequiredDate datetime NULL,

ShippedDate datetime NULL,

ShipVia int NULL,

Freight money NULL,

ShipName nvarchar(40) NULL,

ShipAddress nvarchar(60) NULL,

ShipCity nvarchar(15) NULL,

ShipRegion nvarchar(15) NULL,

ShipPostalCode nvarchar(10) NULL,

ShipCountry nvarchar(15) NULL,

PRIMARY KEY (OrderID)

)Banco de Dados II - Márcio Bueno 17

Page 18: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Consultas em 2 ou mais

tabelas

No SQL Server: cláusulas JOIN.

Podem ser INNER ou OUTER.

Importante uso de apelidos de tabelas.

Normalmente os JOINs unem FK's

com PK's.

Banco de Dados II - Márcio Bueno 18/43

Page 19: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Sintaxe Parcial do JOIN

SELECT <lista_de_campos>

FROM tabela1 [,tabela2,tabela3...]

<tipo> JOIN <tabelax> ON

<criterio_associacao>

Pode existir mais de um JOIN no

comando

Banco de Dados II - Márcio Bueno 19/43

Page 20: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exemplo com duas tabelas

USE Northwind

SELECT cs.companyname,

cs.customerid,

os.orderdate

FROM dbo.customers cs

JOIN dbo.orders os

ON os.customerid = cs.customerid

WHERE os.orderdate BETWEEN '1/1/1997' AND '1/3/1997'

Banco de Dados II - Márcio Bueno 20/43

Page 21: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exemplo com mais de duas

tabelas

USE NorthwindSELECT cliente = cs.companyname, empregado =

em.firstname + ' ' + em.lastname,'Data Pedido' = os.orderdate,Via = sh.companyname

FROM dbo.customers csJOIN dbo.orders os

ON os.customerid = cs.customeridJOIN dbo.employees em

ON em.employeeid = os.employeeidJOIN dbo.shippers sh

ON sh.shipperId = os.shipViaWHERE os.orderdate BETWEEN '01/01/1997' AND

'01/03/1997'Banco de Dados II - Márcio Bueno 21/43

Page 22: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

OUTER JOIN

Pode ser RIGHT, LEFT ou FULL RIGHT e LEFT são equivalentes, só muda a

direção.

FULL mostra das duas tabelas

Aplicações clássicas Mostrar lista dos clientes que não têm pedidos

no Sistema

Mostrar lista dos empregados com os respectivos pedidos realizados (mostrar TODOS os empregados, mesmo os que não efetuaram pedidos).

Banco de Dados II - Márcio Bueno 22/43

Page 23: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exemplo de OUTER JOIN

USE NorthwindSELECT cs.companyname,

cs.customerid,os.orderdate

FROM dbo.customers csLEFT JOIN dbo.orders osON os.customerid = cs.customerid

WHERE os.orderdate between '01/01/1997' AND '01/3/1997' OR orderdate is null

ORDER BY os.orderdate

Mostra todos os clientes com respectivas datas de pedido. Dois deles (FISSA e Paris Spécialités) não fizeram pedidos.

Banco de Dados II - Márcio Bueno 23/43

Page 24: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

CROSS JOIN

Basta não especificar o critério de

associação

Produto cartesiano de registrosSELECT te.TerritoryDescription,

re.RegionDescription

FROM territories te

CROSS JOIN region re

Banco de Dados II - Márcio Bueno 24/43

Page 25: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

UNION

Usado para juntar resultados de

diferentes SELECTs

SELECT name = (em.firstname + ' ' + em.lastname),

em.city,em.postalcode

FROM employees em

UNION

SELECT cs.companyname,cs.city,cs.postalcode

FROM customers cs

Banco de Dados II - Márcio Bueno 25/43

Page 26: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Sub-Consultas

Consiste em introduzir em determinados pontos da consulta uma outra consulta entre parênteses Técnica poderosa e sofisticada

Sub-consulta como um campo Só pode retornar um campo e um valor

Sub-consulta após o FROM ou JOIN Importante uso de apelidos

Sub-consulta no WHERE Só pode retornar um campo e um valor

Banco de Dados II - Márcio Bueno 26/43

Page 27: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Listar sem

repetições os

nomes de

empregados que

fizeram pedidos

no mês de

Janeiro/1997

CREATE TABLE Orders(

OrderID int IDENTITY(1,1),

CustomerID nchar(5),

EmployeeID int,

OrderDate datetime,

... )

CREATE TABLE Employees (

EmployeeID int IDENTITY(1,1),

LastName nvarchar(20),

FirstName nvarchar(10),

... )Banco de Dados II - Márcio Bueno 27

Page 28: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Listar os nomes das

empresas clientes

atendidas por Nancy

Davolio, sem repetições

CREATE TABLE Customers (

CustomerID nchar(5),

CompanyName

nvarchar(40),

...)

CREATE TABLE Orders(

OrderID int IDENTITY(1,1) ,

CustomerID nchar(5),

EmployeeID int,

OrderDate datetime,

... )

CREATE TABLE Employees (

EmployeeID int IDENTITY(1,1),

LastName nvarchar(20),

FirstName nvarchar(10),

... )

Banco de Dados II - Márcio Bueno 28

Page 29: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Mostrar os

nomes e

telefones de

clientes e

empregados.

CREATE TABLE Customers (

CustomerID nchar(5),

CompanyName nvarchar(40),

Phone nvarchar(24),

...)

CREATE TABLE Employees (

EmployeeID int IDENTITY(1,1),

LastName nvarchar(20),

FirstName nvarchar(10),

HomePhone nvarchar(24),

...)Banco de Dados II - Márcio Bueno 29

Page 30: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Agrupamento de Dados

Pode conter a cláusula GROUP BY e

HAVING

Funções de agrupamento

AVG, COUNT, MAX, MIN, SUM, STDEV,

STDEVP, VAR, VARP

Banco de Dados II - Márcio Bueno 30/43

Page 31: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Agrupamento de Dados –

Sem GROUP BY

SELECT COUNT(*)

FROM orders

SELECT COUNT (orderdate)

FROM orders

SELECT MAX(orderdate)

FROM orders

SELECT SUM(freight)

FROM orders

Banco de Dados II - Márcio Bueno 31

Page 32: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Agrupamento de Dados

Regras do GROUP BY

Um item da lista de campos do SELECT pode ser um

campo de tabela, uma expressão ou uma aplicação

de função de agrupamento.

Todo campo ou expressão contido na lista de campos

do SELECT que não for aplicação de uma função de

agrupamento deve estar na lista de campos do

GROUP BY

A inversa não é verdadeira – os campos do GROUP BY não

necessariamente precisam estar contidos na lista de campos

Para filtrar registros baseado no resultado de uma

função de agrupamento, usar HAVING.

Banco de Dados II - Márcio Bueno 32/43

Page 33: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exemplo de GROUP BY

Total de quantidade pedida de cada

produto

SELECT pr.productname,

Count(od.quantity) as QuantidadeTotal

FROM products pr

JOIN [order details] od

ON od.productid = pr.productid

GROUP BY productname

ORDER BY count(od.quantity) descBanco de Dados II - Márcio Bueno 33/43

Page 34: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exemplo de GROUP BY

Contagem de pedidos feitos por empregado

SELECT empregado = (em.firstname + ' ' + em.lastname),

Count (os.orderid) as Pedidos

FROM orders os

JOIN employees em

ON em.employeeid = os.employeeid

GROUP BY em.firstname + ' ' + em.lastname

ORDER BY Pedidos DescBanco de Dados II - Márcio Bueno 34/43

Page 35: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

HAVING

Filtro sobre resultado de função de agrupamento

SELECT empregado = (em.firstname + ' ' + em.lastname), Count(os.orderid) as Pedidos

FROM orders os

JOIN employees em ON em.employeeid = os.employeeid

GROUP BY em.firstname + ' ' + em.lastname

HAVING Count(os.orderid) > 50

ORDER BY Pedidos Desc

Banco de Dados II - Márcio Bueno 35/43

Page 36: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

TOP

Útil para listar os primeiros n valores de uma consulta. Pode listar os primeiros n% registros.

Faz sentido em conjunto com ORDER BY.

Pode listar também os empates na última colocação WITH TIES

Específico do SQL Server.

SELECT TOP 10 (...)SELECT TOP 10 PERCENT (...)SELECT TOP 10 WITH TIES

Banco de Dados II - Márcio Bueno 36/43

Page 37: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Mostre a menor e maior datas de

pedidos realizados.

CREATE TABLE Orders(

OrderID int IDENTITY(1,1),

OrderDate datetime,

...)

Banco de Dados II - Márcio Bueno 37/43

Page 38: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Mostrar quantos

produtos

existem em

cada categoria.

Mostrar o nome

da categoria

(tabelas

Products e

Categories)

CREATE TABLE Categories (

CategoryID int IDENTITY(1,1),

CategoryName nvarchar(15),

...)

CREATE TABLE Products (

ProductID int IDENTITY(1,1),

ProductName nvarchar(40),

CategoryID int,

UnitsInStock smallint NULL,

...)

Banco de Dados II - Márcio Bueno 38

Page 39: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Listar a

quantidade de

pedidos feitos

por cada cliente

entre Janeiro/97

e Junho/97.

Mostrar o nome

da empresa

cliente.

CREATE TABLE Customers (

CustomerID nchar(5),

CompanyName nvarchar(40),

...)

CREATE TABLE Orders(

OrderID int IDENTITY(1,1),

CustomerID nchar(5),

OrderDate datetime,

...)Banco de Dados II - Márcio Bueno 39

Page 40: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Listar a venda

total realizada

por empregado

no mês de

Abril/1997

CREATE TABLE Employees (

EmployeeID int IDENTITY(1,1),

LastName nvarchar(20),

FirstName nvarchar(10),

... )

CREATE TABLE Orders(

OrderID int IDENTITY(1,1),

EmployeeID int,

OrderDate datetime,

...)

Banco de Dados II - Márcio Bueno 40

Page 41: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Listar o nome e a soma

dos valores de pedidos

feitos para cada produto

no mês de Março/1998

dos 10 maiores

CREATE TABLE Products (

ProductID int IDENTITY(1,1),

ProductName nvarchar(40),

...)

CREATE TABLE Orders(

OrderID int IDENTITY(1,1),

...)

CREATE TABLE Order Details (

OrderID int,

ProductID int,

Quantity smallint,

UnitPrice money

...)

Banco de Dados II - Márcio Bueno 41

Page 42: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Listar os 5 fornecedores que mais foram

acionados no ano de 1997, por total de

vendas. Mostrar o nome do fornecedor e o

total da venda.

Banco de Dados II - Márcio Bueno 42/43

Page 43: Revisão / Exercícios - Marcio Bueno · Use Northwind SELECT productid, productname, categoryid, unitprice FROM dbo.products ORDER BY categoryid ASC, unitprice DESC Banco de Dados

Exercício

Listar o total de vendas realizadas mês a

mês. Mostrar o mês/ano e o total de vendas

realizadas naquele mês/ano.

Banco de Dados II - Márcio Bueno 43/43