Banco II - PostgreSQL - Funções

427 visualizações

Publicada em

Banco II - PostgreSQL - Funções

Publicada em: Software
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Banco II - PostgreSQL - Funções

  1. 1. #02 Banco de Dados II 2015.2 Gustavo Sávio <gsoprofessor@gmail.com> 1
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 26. SQL - Funções de Agregação 2 – Contar quantos clientes já fizeram pedidos. Resultado esperado: quantidade_clientes --------------------- 6 26 #Exercícios
  27. 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. 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. 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. 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

×