Title: Fun
1Funções de Linha
2Funções de Linha
- Gerar ou construir novo valor não existente na
tabela inicial. - Valor construído a partir de dados de uma ou mais
células da tabela original. - Todas essas células deve pertencer a uma única
linha dentro da tabela.
3Funções de Linha caso 1
- Novo valor obtido de colunas assinaladas
Ex. SELECT nome nome-meio sobrenome AS NOME
FROM Pessoa WHERE matricula 73847
4Função de Linha caso 2
- Criação da coluna calculada
Mat, n1, n2, n3
Media
Mat, n1, n2, n3
A
SELECT n1 n2 n3 AS media FROM A WHERE
mat IN ( 3, 4 )
5Funções de Linha
- - Estrutura das funções de linha
- Funções de manipulação de caracteres
- Funções numéricas - Trabalhando com datas
- Funções de datas - Aninhando funções
- Funções gerais (NVL, nullif, coalesce, etc.)
- Função case - Função decode
6Estrutura
- SELECT
- FUNCAO_LINHA (campo ,campo2,... ) FROM ....
- WHERE ...
- Usar na cláusula SELECT
7Funções de datas no postgres
- SELECT CURRENT_TIME
- SELECT CURRENT_DATE
- SELECT CURRENT_TIMESTAMP
- SELECT CURRENT_TIMESTAMP(2)
- SELECT LOCALTIMESTAMP
- SELECT timeofday()
- SELECT now()
- SELECT TIMESTAMP 'now'
8Tempo com meridiano
- SELECT TIMESTAMP 'now' AT TIME ZONE 'BRT' (
Brasil ) - SELECT TIMESTAMP 'now' AT TIME ZONE 'AKST' (
Alaska ) - Table B.4. Time Zone Abbreviations for Input
9Funções de Tempo
10(No Transcript)
11Funções de Tempo
- Função OVERLAPS
- Verificar se intervalos de tempo coincidem.
- SELECT (DATE '2001-02-16', DATE '2001-12-21')
- OVERLAPS
- (DATE '2001-10-30', DATE '2002-10-30')
- SELECT (DATE '2001-02-16', INTERVAL '100 days')
OVERLAPS - (DATE '2001-10-30', DATE '2002-10-30')
12Funções de Tempo
- Extract
- extrair parte de período de tempo
- SELECT EXTRACT ( parametro FROM período)
13EXTRACT- parâmetros
Century Século SELECT EXTRACT(CENTURY FROM TIMESTAMP '2001-02-16 203840')
Day Dia SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 203840')
Decade Década SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 203840')
DOW Dia-semana (0-6) SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 203840')
DOY Dia-ano 1-365/366 SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 203840')
EPOCH Segundos desde 1970 SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 203840-08') SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours') SELECT TIMESTAMP WITH TIME ZONE 'epoch' 982384720 INTERVAL '1 second'
14EXTRACT- parâmetros
HOUR Hora (0-23) SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 203840')
Millenium milênio SELECT EXTRACT(millenium FROM TIMESTAMP '2001-02-16 203840')
Milli Seconds Mili-segundos SELECT EXTRACT(milliseconds FROM TIMESTAMP '2001-02-16 203840')
Minute Minutos 0-59 SELECT EXTRACT(minute FROM TIMESTAMP '2001-02-16 203840') SELECT EXTRACT(minute FROM INTERVAL '5 days 3 hours')
Quarter quadrimestre SELECT EXTRACT(quarter FROM TIME '2001-02-16 ')
Second Segundos 0-59 SELECT EXTRACT(second FROM TIMESTAMP WITH TIME ZONE '2001-02-16 203840-08') SELECT EXTRACT(second FROM TIME WITH TIME ZONE 203840-08')
15Função CASE
- Estrutura análoga a estrutura IF/ELSE de
linguagens de programação - Semelhança com SWITCH-CASE da linguagem C Ansi
16Função CASE
- SELECT campo1 ,
- CASE campo1
- WHEN valor1 THEN cmd
- WHEN valor2 THEN cmd2
- ELSE cmd3
- END
- FROM tabela1
- SELECT vl_total_pedido ,
- CASE vl_total_pedido
- WHEN 200 THEN 'duzentos reais'
- WHEN 800 THEN '800 reais'
- ELSE 'outro valor'
- END
- FROM pedido
17Funções NULLIF
18Função COALESCE
19Função DECODE
20Referências
- Manual do Postgres
- B.2. Date/Time Key Words
- Livro
- PATRICK, J. SQL Fundamentos.
- Cap. 9, 10 e 11