Escolar Documentos
Profissional Documentos
Cultura Documentos
2013/1
Aula 17
Prof. Pablo Ariel do Prado Lpez
11/06/2013
Agenda
Avanando em SQL
Select Into
Group By
Order By
Having
11/06/2013
Avanando em SQL
SELECT INTO
A instruo SELECT INTO cria uma tabela e a popula
com o conjunto de resultados da instruo SELECT.
Pode ser usada para combinar dados de vrias
tabelas ou exibies em uma nica tabela.
A estrutura da nova tabela definida pelos atributos
das expresses na lista de seleo.
O comando tambm pode ser til para a criao de
backups de tabelas importantes dentro de um
sistema.
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
Exemplo:
Suponha a existncia de uma tabela empregados com a
seguinte estrutura:
create table empregados
(
codEmpregado int not null identity (1,1),
nome varchar(50),
cargo varchar (20),
codChefe int,
primary key (codEmpregado)
)
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
A partir da tabela empregados, queremos separar os cargos
em uma tabela separada, para poder cadastrar novos cargos
sem ter a necessidade de ter que cadastrar um funcionrio.
Utilizaremos a seguinte sintaxe:
11/06/2013
Avanando em SQL
GROUP BY
11/06/2013
Avanando em SQL
Deve ser utilizado sempre que
queremos utilizar uma funo
de agregao para trazer um
valor, com alguma outra
coluna onde no efetuamos
nenhuma operao.
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
Exemplo:
SELECT CodProduto, COUNT(*) AS Total
FROM ItemVenda
GROUP BY CodProduto
11/06/2013
Avanando em SQL
Exemplo:
SELECT Nome, SUM(Quantidade) AS Estoque'
FROM Produtos
GROUP BY Nome
11/06/2013
Avanando em SQL
Utilizando as tabelas criadas na aula
anterior, realize uma consulta que
liste o nome do programador, o
nmero de linguagens que ele
conhece e o nome da empresa,
agrupando pelo seu nome e pela
empresa que trabalha
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
HAVING
Especifica um critrio de pesquisa para um
grupo ou um agregado.
Geralmente usada com a clusula GROUP BY.
diferente do WHERE, visto que este restringe
os resultados obtidos sempre aps o uso da
clusula
FROM,
ao
passo
que
a
clusula HAVING filtra o retorno do
agrupamento.
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
WHERE
serve
para
filtros
condicionais (onde isto igual a
aquilo, etc).
HAVING somente pode ser utilizado
com o GROUP BY, e serve para filtros
onde o WHERE no pode ser
utilizado, como por exemplo funes
agregadas.
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
Exemplo:
SELECT coluna_1, sum(coluna_2)
FROM tabela
WHERE coluna_1 = %exemplo%
GROUP BY coluna_1
HAVING sum(coluna_2) > 100
Ou seja, o HAVING pode fazer um filtro
no resultado da soma (funo agregada).
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
Exemplo:
SELECT CodProduto, COUNT(*) AS Total
FROM ItemVenda
GROUP BY CodProduto
HAVING (COUNT(*) > 50)
11/06/2013
Avanando em SQL
Exemplo:
SELECT Nome, SUM(Quantidade) AS 'Estoque'
FROM Produtos
GROUP BY Nome
HAVING SUM(Quantidade) > 200
11/06/2013
Avanando em SQL
ORDER BY
A clusula ORDER BY classifica os resultados da
consulta por uma ou mais colunas
A clusula ORDER BY no vlida em vises,
procedimentos armazenados e subconsultas, a
menos que TOP tambm seja especificada.
O padro ordem crescente (ASC).
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Avanando em SQL
Exemplo:
SELECT CodProduto, Nome, PrecoUnitario
FROM Produto
ORDER BY PrecoUnitario [DESC/ASC]
11/06/2013
Exerccios
VIEWS:
Considerando a tabela programador
listada anteriormente, crie uma
viso
que
liste
todos
os
programadores, e depois consulte a
mesma incluindo algum critrio de
filtro.
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Exerccios
SELECT INTO:
Realize uma consulta para criar uma
tabela de backup da tabela de
programadores.
Considerando a tabela Aluno criada
na aula anterior, crie uma tabela de
contatos, utilizando os atributos
apropriados.
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Exerccios
GROUP BY:
Utilizando
a
tabela
de
programadores e linguagens como
base, realize a contagem total de
programadores e agrupe por
linguagem,
apresentando
a
linguagem
e
o
total
de
programadores de cada linguagem.
Fundamentos de Banco de Dados - 2013/1
11/06/2013
Exerccios
HAVING:
Considerando o exerccio anterior,
inclua um critrio para que sejam
apresentadas as linguagens que
possuem no mnimo 1 programador.
11/06/2013
Exerccios
ORDER BY:
Consulte as Views criadas e ordeneas por nome e linguagens que os
mesmos programam. Faa as
alteraes na View que julgar
necessrias para atender o critrio.
11/06/2013
Obrigado!
Perguntas?
Dvidas?
11/06/2013