SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
#02
Banco de Dados II
2015.2 Gustavo Sávio <gsoprofessor@gmail.com> 1
Funções da SQL
As funções de SQL existem para facilitar a
manipulação dos dados armazenados na base de
dados.
Elas são ferramentas projetadas para desempenhar
uma tarefa única e bem definida.
As funções de SQL são chamadas dentro de uma
consulta SQL pelo seu nome:
– Algumas recebem argumento, outras não.
– Todas elas retornam um valor.
2
#Funções
Categorias Gerais de Funções
Categoria de Função Descrição
Matemáticas Funções usadas para realizar cálculos matemáticos
específicos, como as funções trigonométricas e outras.
Cadeia de Caracteres Funções que realizam manipulação de cadeia de
caracteres, tais como: localizar padrões dentro de
cadeias de caracteres, inserir caracteres, concatenar
cadeias de caracteres, descobrir o comprimento,
converter para maiúsculo e minúsculo.
Data/Hora Funções utilizadas para retornar informações sobre
data/hora correntes, formatar data e hora como cadeia
de caracteres, realizar cálculos baseado em horários,
etc.
Agregação Funções utilizadas para fazer agrupamento.
Formatação Funções utilizadas para retornar informações
formatadas.
3
#Funções
SQL - Funções Matemáticas
Algumas funções Matemáticas (PostgreSQL):
– valor % valor: retorna o valor do resto da divisão
entre dois números.
– Valor ^ valor: retorna o valor elevado a potência.
– valor!: retorna o valor fatorial do número.
– @(valor): retorna o valor absoluto.
4
#Funções Matemáticas
SQL - Funções Matemáticas
Algumas funções Matemáticas (PostgreSQL):
– |/ valor: retorna o valor da raiz quadrada.
– ||/ valor: retorna o valor da raiz cúbica.
– ABS(valor): retorna o valor absoluto (positivo).
– CEIL(valor): retorna o valor arredondado.
5
#Funções Matemáticas
SQL - Funções Matemáticas
Algumas funções Matemáticas (PostgreSQL):
– FLOOR(valor): retorna o valor truncado.
– MOD(x, y): retorna o valor do resto de divisão de x/y.
– PI(): retorna o valor de PI.
– POWER(x, y): retorna o valor de x elevado a y.
6
#Funções Matemáticas
SQL - Funções Matemáticas
Algumas funções Matemáticas (PostgreSQL):
– RANDOM(): retorna o valor aleatório entre 0 e 1.
– ROUND(valor): retorna o valor arredondado.
– SQRT(valor): retorna o valor da raiz quadrada.
– TRUNC(valor): retorna o valor truncado.
7
#Funções Matemáticas
SQL - Funções Matemáticas
Algumas funções Matemáticas (PostgreSQL):
– GREATEST(valor1, valor2,...valorN): retorna o maior
valor de uma lista.
– LEAST(valor1, valor2,...valorN): retorna o menor valor
de uma lista.
8
#Funções Matemáticas
SQL - Funções Matemáticas
• Exemplo:
SELECT ABS(-1.0) AS ‘Absoluto’, FLOOR(20.25) AS
‘Inteiro’,
ROUND(0.75,1) AS ‘Arred’, POWER(3,4) AS
‘Potencia’
• Resultado:
Absoluto Inteiro Arred Potencia
1.0 20 0.8 81
9
#Funções Matemáticas
SQL - Funções de Caracteres
Algumas funções de Cadeia de Caracteres
(PostgreSQL):
– texto || texto: concatena duas strings.
– CHAR_LENGTH(texto): retorna a quantidade de uma cadeia
de caracteres.
– UPPER(texto): converte uma cadeia para maiúsculo.
– LOWER(expressão): converte uma cadeia para minúsculo.
10
#Funções de cadeia de caracteres
SQL - Funções de Caracteres
Algumas funções de Cadeia de Caracteres
(PostgreSQL):
– POSITION(procurar IN texto): retorna a posição do
caractere.
– STRPOS(texto, procurar): retorna a posição do
caractere.
– SUBSTRING(texto FROM inicio FOR fim): retorna a
substring do texto.
11
#Funções de cadeia de caracteres
SQL - Funções de Caracteres
Algumas funções de Cadeia de Caracteres
(PostgreSQL):
– SUBSTR(procurar, inicio, fim): retorna a substring do
texto.
– TRANSLATE(texto, procurar, modificar): Substitui todos
os caracteres.
– TRIM(texto): remove caracteres em branco da direita e
esquerda.
12
#Funções de cadeia de caracteres
SQL - Funções de Caracteres
Algumas funções de Cadeia de Caracteres
(PostgreSQL):
– MD5(texto): retorna o código hash usando o algoritmo
md5.
– REPEAT(texto, quantidade): repete um texto N vezes.
– REPLACE(texto, procurar, modificar): sobrescreve um
trecho de uma string.
– SPLIT_PART(texto, delimitador, posicao): divide uma
string de acordo com o delimitador retornando o campo
especificado pela posicao (começando de 1).
13
#Funções de cadeia de caracteres
SQL - Funções de Caracteres
Algumas funções de Cadeia de Caracteres
(PostgreSQL):
– RTRIM(texto, remover): remove os caracteres da
direita. O padrão é espaço em branco.
– LTRIM(texto, remover): remove os caracteres da
esquerda. O padrão é espaço em branco.
– INITCAP(texto): Capitaliza uma cadeia de caracteres.
– REVERSE(texto): retorna uma String reversa.
14
#Funções de cadeia de caracteres
SQL - Funções de CaracteresExemplo - Exibir o nome dos produtos em minúsculo,
maiúsculo e os 10 primeiros caracteres do nome também em
maiúsculo.
SELECT LOWER(nome) AS nome_minusculo,
• UPPER(nome) AS nome_maiusculo,
• UPPER(SUBSTR(nome, 1, 10)) AS nome_reduzido
FROM Produto
Resultado:
nome_minusculo nome_maiusculo nome_reduzido
abajur	alist ABAJUR	ALIST ABAJUR	ALI
computador	positivo COMPUTADOR	POSITIVO COMPUTADOR
iogurte	nestle IOGURTE	NESTLE IOGURTE	NE
liquidificador LIQUIDIFICADOR LIQUIDIFIC
15
#Funções de cadeia de caracteres
SQL - Funções de Data/Hora
Algumas funções de Data/Hora (PostgreSQL):
– SELECT TIMESTAMP '2014-08-08' + INTERVAL '48 hours';
INTERVAL: utiliza as unidades SECOND, MINUTE, HOUR, DAY,
WEEK, MONTH, YEAR, DECADE, CENTURY, MILLENNIUM e
plurais dessas unidades.
16
#Funções de data/hora
SQL - Funções de Data/Hora
Algumas funções de Data/Hora (PostgreSQL):
– AGE: Diferença entre datas.
Retorna um INTERVAL
Subtrai da data atual:
SELECT AGE (TIMESTAMP'2013-08-08')
Subtrai o período entre duas datas:
SELECT AGE(TIMESTAMP '2014-08-08', TIMESTAMP '2013-04-
09')
17
#Funções de data/hora
SQL - Funções de Data/HoraAlgumas funções de Data/Hora (PostgreSQL):
– EXTRACT: Extrai informações de um DATE ou TIMESTAMP.
Retorna um Double.
Extraindo dados de um TIMESTAMP:
SELECT EXTRACT (YEAR FROM (TIMESTAMP'2013-08-08'))
SELECT EXTRACT (SECOND FROM (TIMESTAMP '2013-08-08
01:06:12'));
SELECT EXTRACT (MONTH FROM (TIMESTAMP '2013-08-08
01:06:12'));
18
#Funções de data/hora
SQL - Funções de Data/Hora
Algumas funções de Data/Hora (PostgreSQL):
Extrair a diferença de anos entre duas datas:
SELECT EXTRACT(YEAR FROM AGE('2014-08-08', TIMESTAMP
'1987-02-23'));
19
#Funções de data/hora
SQL - Funções de Data/HoraAlgumas funções de Data/Hora (PostgreSQL):
Obter data e hora atual:
SELECT CURRENT_DATE;
SELECT CURRENT_TIME;
SELECT CURRENT_TIME(0);
SELECT CURRENT_TIMESTAMP;
SELECT CURRENT_TIMESTAMP(0);
NOW() (TIMESTAMP WITH ZONE);
SELECT TIMESTAMP WITH TIME ZONE '2001-02-16
20:38:40-05' AT TIME ZONE 'MST';
Retornam DATE ou TIMESTAMP
20
#Funções de data/hora
SQL - Funções de Data/Hora
Algumas funções de Data/Hora (PostgreSQL):
– DATE_PART: Extrai informações de um DATE ou
TIMESTAMP.
Retorna uma String.
Obter parte de um Data/Hora:
SELECT DATE_PART('DAY', TIMESTAMP '2014-08-10
09:59:00') AS dia, DATE_PART('MONTH', TIMESTAMP '2014-
08-10 09:59:00') AS mes, DATE_PART('YEAR', TIMESTAMP
'2014-08-10 09:59:00') AS ano
21
#Funções de data/hora
SQL - Funções de Agregação
Algumas funções de Agregação (PostgreSQL):
– COUNT(*): conta a quantidade de registros.
– COUNT(DISTINCT expressão): conta a quantidade de
registros filtrando pela expressão.
– SUM ( ): soma os valores de uma coluna de dados
numéricos.
– AVG ( ): calcula a média de uma coluna de dados
numéricos.
– MAX ( ): determina o maior valor de uma coluna.
– MIN ( ): determina o menor valor de uma coluna.
22
#Funções de Agregação
SQL - Funções de Agregação
Algumas funções de formatação (PostgreSQL):
– TO_CHAR(tipo_de_dado, text) – Converte um tipo de dado
em uma string seguindo um padrão.
Tipos suportados: TIMESTAMP, INTERVAL, INT, DOUBLE,
NUMERIC, TEXT.
to_char(current_timestamp, 'HH12:MI:SS')
to_char(interval '15h 2m 12s', 'HH24:MI:SS')
to_char(125, '999')
to_char(125.8::real, '999D9')
to_date('05 Dec 2000', 'DD Mon YYYY')
23
#Funções de Formatação
SQL - Funções de Agregação
Casting (PostgreSQL):
– CAST(expressão AS tipo) – Efetua um CAST entre tipos
de dados.
– Expressão::tipo – Efetua um cast entre tipos de
dados
SELECT CAST('10 08 2014' AS DATE);
SELECT '10 08 2014’::DATE;
24
#Funções de Casting
SQL - Funções de Agregação
1 – Agrupar a quantidade de pedidos de um determinado
cliente (tabela pedido) considerando que só devem ser
retornadas a tuplas que possuam clientes com mais de 2
pedidos.
Resultado esperado:
cliente | quantidade_pedidos
---------+--------------------
1 | 7
3 | 3
4 | 4
6 | 7
25
#Exercícios
SQL - Funções de Agregação
2 – Contar quantos clientes já fizeram pedidos.
Resultado esperado:
quantidade_clientes
---------------------
6
26
#Exercícios
SQL - Funções de Agregação3 – Obter as seguintes informações da loja: Um relatório contendo as
informações: o último nome do cliente, o nome do vendedor que o atendeu
e a soma de todos os produtos que o mesmo vendeu para o cliente.
Considere os descontos.
Resultado esperado:
nome | vendedor | preco
----------------+--------------------+---------
Representacoes | Francisco da Silva | 22.45
Representacoes | Luiza Costa | 92.00
Representacoes | Maria de Souza | 162.40
Correia | Joao da Silva | 395.60
Correia | Luiza Costa | 2845.00
Comercio | Joao da Silva | 1374.90
Maia | Luiza Costa | 955.00
Maia | Maria de Souza | 15.00
Andrade | Joao da Silva | 2890.60
Andrade | Luiza Costa | 663.35
Andrade | Maria de Souza | 6.90
Ferreira | Francisco da Silva | 3.70
Ferreira | Luiza Costa | 628.60
Ferreira | Maria de Souza | 1295.21
27
#Exercícios
SQL - Funções de Agregação
4 – Obter o valor médio de produtos vendidos de cada
funcionário. Considere os descontos.
Resultado esperado:
nome | media_venda
--------------------+-------------
Luiza Costa | 863,99
Joao da Silva | 665,87
Maria de Souza | 123,29
Francisco da Silva | 6,54
2014.2 Gustavo Sávio <prof.gustavosavio@gmail.com> 28
#Exercícios
SQL - Funções de Agregação
1 – SELECT CLIENTE, COUNT(cliente) AS QUANTIDADE_PEDIDOS
FROM PEDIDO GROUP BY cliente HAVING COUNT(cliente) > 2
ORDER BY CLIENTE
2 - SELECT COUNT(DISTINCT cliente) AS QUANTIDADE_CLIENTES
FROM PEDIDO;
3- SELECT REVERSE(SUBSTRING(REVERSE(cl.nome) FROM 0 FOR
POSITION(' ' IN REVERSE(cl.nome)))) AS nome, f.nome AS
vendedor, SUM(i.preco) as preco FROM cliente AS cl JOIN
pedido AS p ON cl.codigo = p.cliente JOIN funcionario AS
f ON p.vendedor = f.codigo JOIN itens AS i ON p.codigo =
i.pedido GROUP BY cl.codigo, f.codigo ORDER BY cl.nome,
f.nome;
29
#Exercícios - Gabarito
SQL - Funções de Agregação
4 – SELECT f.nome,TO_CHAR(AVG(i.preco::NUMERIC –
i.desconto::NUMERIC), '999D99') AS media_venda FROM
FUNCIONARIO AS f JOIN pedido p ON f.codigo = p.vendedor
JOIN itens i ON p.codigo = i.pedido GROUP BY f.nome ORDER
BY media_venda DESC;
30
#Exercícios - Gabarito

Mais conteúdo relacionado

Mais procurados

TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
Aula5 normalização
Aula5   normalizaçãoAula5   normalização
Aula5 normalizaçãoMatias Silva
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosFábio dos Reis
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dadoselliando dias
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Emiliano Barbosa
 
Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8Emiliano Barbosa
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultasjulianaveregue
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Marco Pinheiro
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Emiliano Barbosa
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - BásicoAirton Zanon
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosjulianaveregue
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sqlNilson Augustini
 
Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Emiliano Barbosa
 

Mais procurados (19)

TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
Aula5 normalização
Aula5   normalizaçãoAula5   normalização
Aula5 normalização
 
Aula 9 banco de dados
Aula 9   banco de dadosAula 9   banco de dados
Aula 9 banco de dados
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Apostila de sql
Apostila de sqlApostila de sql
Apostila de sql
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Sql server
Sql serverSql server
Sql server
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
 
Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8Fundamentos de SQL - Parte 6 de 8
Fundamentos de SQL - Parte 6 de 8
 
Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8Fundamentos de SQL - Parte 4 de 8
Fundamentos de SQL - Parte 4 de 8
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultas
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8
 
Aula de SQL - Básico
Aula de SQL - BásicoAula de SQL - Básico
Aula de SQL - Básico
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dados
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8Fundamentos de SQL - Parte 5 de 8
Fundamentos de SQL - Parte 5 de 8
 
Programas auxiliares
Programas auxiliaresProgramas auxiliares
Programas auxiliares
 

Destaque

Oracle 11g - Fundamentos
Oracle 11g - FundamentosOracle 11g - Fundamentos
Oracle 11g - FundamentosGustavo Sávio
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universoelliando dias
 
Oracle 11g resumo
Oracle 11g resumoOracle 11g resumo
Oracle 11g resumomarcosgama
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosDanilo Braga
 
14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-pt14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-ptguest519a5b6
 
Apostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracleApostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracle79anderson
 

Destaque (10)

Apostila de sql oracle
Apostila de sql oracleApostila de sql oracle
Apostila de sql oracle
 
Oracle 11g - Fundamentos
Oracle 11g - FundamentosOracle 11g - Fundamentos
Oracle 11g - Fundamentos
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
 
Oracle 11g resumo
Oracle 11g resumoOracle 11g resumo
Oracle 11g resumo
 
Oracle 9i curso_completo
Oracle 9i curso_completoOracle 9i curso_completo
Oracle 9i curso_completo
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos Básicos
 
14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-pt14100015 introducao-oracle-sqlplsql-vol2-pt
14100015 introducao-oracle-sqlplsql-vol2-pt
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Apostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracleApostila completa-oracle-programando-oracle
Apostila completa-oracle-programando-oracle
 
Exercícios PL/SQL
Exercícios PL/SQLExercícios PL/SQL
Exercícios PL/SQL
 

Semelhante a Banco II - PostgreSQL - Funções

BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03
BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03
BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03Rodrigo Kiyoshi Saito
 
11 SQL - Funções de string e matemática
11 SQL - Funções de string e matemática11 SQL - Funções de string e matemática
11 SQL - Funções de string e matemáticaCentro Paula Souza
 
3º Fast Show - SQL Analytics
3º Fast Show - SQL Analytics3º Fast Show - SQL Analytics
3º Fast Show - SQL Analyticsqualidatavix
 
Funções Administrativas no PostgreSQL
Funções Administrativas no PostgreSQLFunções Administrativas no PostgreSQL
Funções Administrativas no PostgreSQLLeonardo Cezar
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlLocaweb
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggersflaviognm
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQLKingHost - Hospedagem de sites
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkFelipe
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 

Semelhante a Banco II - PostgreSQL - Funções (20)

Agrupamento
AgrupamentoAgrupamento
Agrupamento
 
Agrupamento
AgrupamentoAgrupamento
Agrupamento
 
BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03
BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03
BD I - Aula 13 A - Funcoes de string datas numeros e conversao - parte 03
 
11 SQL - Funções de string e matemática
11 SQL - Funções de string e matemática11 SQL - Funções de string e matemática
11 SQL - Funções de string e matemática
 
3º Fast Show - SQL Analytics
3º Fast Show - SQL Analytics3º Fast Show - SQL Analytics
3º Fast Show - SQL Analytics
 
Funções Administrativas no PostgreSQL
Funções Administrativas no PostgreSQLFunções Administrativas no PostgreSQL
Funções Administrativas no PostgreSQL
 
Uso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sqlUso de estatísticas pelo postgre sql
Uso de estatísticas pelo postgre sql
 
Java 8 - New Features
Java 8 - New FeaturesJava 8 - New Features
Java 8 - New Features
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Sql proficiente
Sql proficienteSql proficiente
Sql proficiente
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015
 
Map, filter e reduce
Map, filter e reduceMap, filter e reduce
Map, filter e reduce
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Pré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache SparkPré processamento de grandes dados com Apache Spark
Pré processamento de grandes dados com Apache Spark
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Sql02
Sql02Sql02
Sql02
 

Banco II - PostgreSQL - Funções

  • 1. #02 Banco de Dados II 2015.2 Gustavo Sávio <gsoprofessor@gmail.com> 1
  • 2. Funções da SQL As funções de SQL existem para facilitar a manipulação dos dados armazenados na base de dados. Elas são ferramentas projetadas para desempenhar uma tarefa única e bem definida. As funções de SQL são chamadas dentro de uma consulta SQL pelo seu nome: – Algumas recebem argumento, outras não. – Todas elas retornam um valor. 2 #Funções
  • 3. Categorias Gerais de Funções Categoria de Função Descrição Matemáticas Funções usadas para realizar cálculos matemáticos específicos, como as funções trigonométricas e outras. Cadeia de Caracteres Funções que realizam manipulação de cadeia de caracteres, tais como: localizar padrões dentro de cadeias de caracteres, inserir caracteres, concatenar cadeias de caracteres, descobrir o comprimento, converter para maiúsculo e minúsculo. Data/Hora Funções utilizadas para retornar informações sobre data/hora correntes, formatar data e hora como cadeia de caracteres, realizar cálculos baseado em horários, etc. Agregação Funções utilizadas para fazer agrupamento. Formatação Funções utilizadas para retornar informações formatadas. 3 #Funções
  • 4. SQL - Funções Matemáticas Algumas funções Matemáticas (PostgreSQL): – valor % valor: retorna o valor do resto da divisão entre dois números. – Valor ^ valor: retorna o valor elevado a potência. – valor!: retorna o valor fatorial do número. – @(valor): retorna o valor absoluto. 4 #Funções Matemáticas
  • 5. SQL - Funções Matemáticas Algumas funções Matemáticas (PostgreSQL): – |/ valor: retorna o valor da raiz quadrada. – ||/ valor: retorna o valor da raiz cúbica. – ABS(valor): retorna o valor absoluto (positivo). – CEIL(valor): retorna o valor arredondado. 5 #Funções Matemáticas
  • 6. SQL - Funções Matemáticas Algumas funções Matemáticas (PostgreSQL): – FLOOR(valor): retorna o valor truncado. – MOD(x, y): retorna o valor do resto de divisão de x/y. – PI(): retorna o valor de PI. – POWER(x, y): retorna o valor de x elevado a y. 6 #Funções Matemáticas
  • 7. SQL - Funções Matemáticas Algumas funções Matemáticas (PostgreSQL): – RANDOM(): retorna o valor aleatório entre 0 e 1. – ROUND(valor): retorna o valor arredondado. – SQRT(valor): retorna o valor da raiz quadrada. – TRUNC(valor): retorna o valor truncado. 7 #Funções Matemáticas
  • 8. SQL - Funções Matemáticas Algumas funções Matemáticas (PostgreSQL): – GREATEST(valor1, valor2,...valorN): retorna o maior valor de uma lista. – LEAST(valor1, valor2,...valorN): retorna o menor valor de uma lista. 8 #Funções Matemáticas
  • 9. SQL - Funções Matemáticas • Exemplo: SELECT ABS(-1.0) AS ‘Absoluto’, FLOOR(20.25) AS ‘Inteiro’, ROUND(0.75,1) AS ‘Arred’, POWER(3,4) AS ‘Potencia’ • Resultado: Absoluto Inteiro Arred Potencia 1.0 20 0.8 81 9 #Funções Matemáticas
  • 10. SQL - Funções de Caracteres Algumas funções de Cadeia de Caracteres (PostgreSQL): – texto || texto: concatena duas strings. – CHAR_LENGTH(texto): retorna a quantidade de uma cadeia de caracteres. – UPPER(texto): converte uma cadeia para maiúsculo. – LOWER(expressão): converte uma cadeia para minúsculo. 10 #Funções de cadeia de caracteres
  • 11. SQL - Funções de Caracteres Algumas funções de Cadeia de Caracteres (PostgreSQL): – POSITION(procurar IN texto): retorna a posição do caractere. – STRPOS(texto, procurar): retorna a posição do caractere. – SUBSTRING(texto FROM inicio FOR fim): retorna a substring do texto. 11 #Funções de cadeia de caracteres
  • 12. SQL - Funções de Caracteres Algumas funções de Cadeia de Caracteres (PostgreSQL): – SUBSTR(procurar, inicio, fim): retorna a substring do texto. – TRANSLATE(texto, procurar, modificar): Substitui todos os caracteres. – TRIM(texto): remove caracteres em branco da direita e esquerda. 12 #Funções de cadeia de caracteres
  • 13. SQL - Funções de Caracteres Algumas funções de Cadeia de Caracteres (PostgreSQL): – MD5(texto): retorna o código hash usando o algoritmo md5. – REPEAT(texto, quantidade): repete um texto N vezes. – REPLACE(texto, procurar, modificar): sobrescreve um trecho de uma string. – SPLIT_PART(texto, delimitador, posicao): divide uma string de acordo com o delimitador retornando o campo especificado pela posicao (começando de 1). 13 #Funções de cadeia de caracteres
  • 14. SQL - Funções de Caracteres Algumas funções de Cadeia de Caracteres (PostgreSQL): – RTRIM(texto, remover): remove os caracteres da direita. O padrão é espaço em branco. – LTRIM(texto, remover): remove os caracteres da esquerda. O padrão é espaço em branco. – INITCAP(texto): Capitaliza uma cadeia de caracteres. – REVERSE(texto): retorna uma String reversa. 14 #Funções de cadeia de caracteres
  • 15. SQL - Funções de CaracteresExemplo - Exibir o nome dos produtos em minúsculo, maiúsculo e os 10 primeiros caracteres do nome também em maiúsculo. SELECT LOWER(nome) AS nome_minusculo, • UPPER(nome) AS nome_maiusculo, • UPPER(SUBSTR(nome, 1, 10)) AS nome_reduzido FROM Produto Resultado: nome_minusculo nome_maiusculo nome_reduzido abajur alist ABAJUR ALIST ABAJUR ALI computador positivo COMPUTADOR POSITIVO COMPUTADOR iogurte nestle IOGURTE NESTLE IOGURTE NE liquidificador LIQUIDIFICADOR LIQUIDIFIC 15 #Funções de cadeia de caracteres
  • 16. SQL - Funções de Data/Hora Algumas funções de Data/Hora (PostgreSQL): – SELECT TIMESTAMP '2014-08-08' + INTERVAL '48 hours'; INTERVAL: utiliza as unidades SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR, DECADE, CENTURY, MILLENNIUM e plurais dessas unidades. 16 #Funções de data/hora
  • 17. SQL - Funções de Data/Hora Algumas funções de Data/Hora (PostgreSQL): – AGE: Diferença entre datas. Retorna um INTERVAL Subtrai da data atual: SELECT AGE (TIMESTAMP'2013-08-08') Subtrai o período entre duas datas: SELECT AGE(TIMESTAMP '2014-08-08', TIMESTAMP '2013-04- 09') 17 #Funções de data/hora
  • 18. SQL - Funções de Data/HoraAlgumas funções de Data/Hora (PostgreSQL): – EXTRACT: Extrai informações de um DATE ou TIMESTAMP. Retorna um Double. Extraindo dados de um TIMESTAMP: SELECT EXTRACT (YEAR FROM (TIMESTAMP'2013-08-08')) SELECT EXTRACT (SECOND FROM (TIMESTAMP '2013-08-08 01:06:12')); SELECT EXTRACT (MONTH FROM (TIMESTAMP '2013-08-08 01:06:12')); 18 #Funções de data/hora
  • 19. SQL - Funções de Data/Hora Algumas funções de Data/Hora (PostgreSQL): Extrair a diferença de anos entre duas datas: SELECT EXTRACT(YEAR FROM AGE('2014-08-08', TIMESTAMP '1987-02-23')); 19 #Funções de data/hora
  • 20. SQL - Funções de Data/HoraAlgumas funções de Data/Hora (PostgreSQL): Obter data e hora atual: SELECT CURRENT_DATE; SELECT CURRENT_TIME; SELECT CURRENT_TIME(0); SELECT CURRENT_TIMESTAMP; SELECT CURRENT_TIMESTAMP(0); NOW() (TIMESTAMP WITH ZONE); SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST'; Retornam DATE ou TIMESTAMP 20 #Funções de data/hora
  • 21. SQL - Funções de Data/Hora Algumas funções de Data/Hora (PostgreSQL): – DATE_PART: Extrai informações de um DATE ou TIMESTAMP. Retorna uma String. Obter parte de um Data/Hora: SELECT DATE_PART('DAY', TIMESTAMP '2014-08-10 09:59:00') AS dia, DATE_PART('MONTH', TIMESTAMP '2014- 08-10 09:59:00') AS mes, DATE_PART('YEAR', TIMESTAMP '2014-08-10 09:59:00') AS ano 21 #Funções de data/hora
  • 22. SQL - Funções de Agregação Algumas funções de Agregação (PostgreSQL): – COUNT(*): conta a quantidade de registros. – COUNT(DISTINCT expressão): conta a quantidade de registros filtrando pela expressão. – SUM ( ): soma os valores de uma coluna de dados numéricos. – AVG ( ): calcula a média de uma coluna de dados numéricos. – MAX ( ): determina o maior valor de uma coluna. – MIN ( ): determina o menor valor de uma coluna. 22 #Funções de Agregação
  • 23. SQL - Funções de Agregação Algumas funções de formatação (PostgreSQL): – TO_CHAR(tipo_de_dado, text) – Converte um tipo de dado em uma string seguindo um padrão. Tipos suportados: TIMESTAMP, INTERVAL, INT, DOUBLE, NUMERIC, TEXT. to_char(current_timestamp, 'HH12:MI:SS') to_char(interval '15h 2m 12s', 'HH24:MI:SS') to_char(125, '999') to_char(125.8::real, '999D9') to_date('05 Dec 2000', 'DD Mon YYYY') 23 #Funções de Formatação
  • 24. SQL - Funções de Agregação Casting (PostgreSQL): – CAST(expressão AS tipo) – Efetua um CAST entre tipos de dados. – Expressão::tipo – Efetua um cast entre tipos de dados SELECT CAST('10 08 2014' AS DATE); SELECT '10 08 2014’::DATE; 24 #Funções de Casting
  • 25. SQL - Funções de Agregação 1 – Agrupar a quantidade de pedidos de um determinado cliente (tabela pedido) considerando que só devem ser retornadas a tuplas que possuam clientes com mais de 2 pedidos. Resultado esperado: cliente | quantidade_pedidos ---------+-------------------- 1 | 7 3 | 3 4 | 4 6 | 7 25 #Exercícios
  • 26. SQL - Funções de Agregação 2 – Contar quantos clientes já fizeram pedidos. Resultado esperado: quantidade_clientes --------------------- 6 26 #Exercícios
  • 27. SQL - Funções de Agregação3 – Obter as seguintes informações da loja: Um relatório contendo as informações: o último nome do cliente, o nome do vendedor que o atendeu e a soma de todos os produtos que o mesmo vendeu para o cliente. Considere os descontos. Resultado esperado: nome | vendedor | preco ----------------+--------------------+--------- Representacoes | Francisco da Silva | 22.45 Representacoes | Luiza Costa | 92.00 Representacoes | Maria de Souza | 162.40 Correia | Joao da Silva | 395.60 Correia | Luiza Costa | 2845.00 Comercio | Joao da Silva | 1374.90 Maia | Luiza Costa | 955.00 Maia | Maria de Souza | 15.00 Andrade | Joao da Silva | 2890.60 Andrade | Luiza Costa | 663.35 Andrade | Maria de Souza | 6.90 Ferreira | Francisco da Silva | 3.70 Ferreira | Luiza Costa | 628.60 Ferreira | Maria de Souza | 1295.21 27 #Exercícios
  • 28. SQL - Funções de Agregação 4 – Obter o valor médio de produtos vendidos de cada funcionário. Considere os descontos. Resultado esperado: nome | media_venda --------------------+------------- Luiza Costa | 863,99 Joao da Silva | 665,87 Maria de Souza | 123,29 Francisco da Silva | 6,54 2014.2 Gustavo Sávio <prof.gustavosavio@gmail.com> 28 #Exercícios
  • 29. SQL - Funções de Agregação 1 – SELECT CLIENTE, COUNT(cliente) AS QUANTIDADE_PEDIDOS FROM PEDIDO GROUP BY cliente HAVING COUNT(cliente) > 2 ORDER BY CLIENTE 2 - SELECT COUNT(DISTINCT cliente) AS QUANTIDADE_CLIENTES FROM PEDIDO; 3- SELECT REVERSE(SUBSTRING(REVERSE(cl.nome) FROM 0 FOR POSITION(' ' IN REVERSE(cl.nome)))) AS nome, f.nome AS vendedor, SUM(i.preco) as preco FROM cliente AS cl JOIN pedido AS p ON cl.codigo = p.cliente JOIN funcionario AS f ON p.vendedor = f.codigo JOIN itens AS i ON p.codigo = i.pedido GROUP BY cl.codigo, f.codigo ORDER BY cl.nome, f.nome; 29 #Exercícios - Gabarito
  • 30. SQL - Funções de Agregação 4 – SELECT f.nome,TO_CHAR(AVG(i.preco::NUMERIC – i.desconto::NUMERIC), '999D99') AS media_venda FROM FUNCIONARIO AS f JOIN pedido p ON f.codigo = p.vendedor JOIN itens i ON p.codigo = i.pedido GROUP BY f.nome ORDER BY media_venda DESC; 30 #Exercícios - Gabarito