Funções em SQL II
Costa, Lidiane Farias
SST Funções em SQL II / Lidiane Farias Costa
Ano: 2021
nº de p. : 18
Copyright © 2019. Delinea Tecnologia Educacional. Todos os direitos reservados.
Funções em SQL II
Apresentação
Vamos estudar, hoje, sobre as Funções em SQL. Uma função pode ser compreendida
como um conjunto de comandos com um único nome. Os SGBDs possuem algumas
funções nativas, chamadas de funções internas, mas também podem ter funções em
SQL, o que possibilita ao usuário criar as próprias funções de acordo com as suas
necessidades.
3
1. Funções de strings
As funções internas são recursos criados para facilitar a vida do programador com o
agrupamento de diversas ações em um único comando.
Podem ser classificadas de acordo com os objetivos. Vejamos o quadro a seguir.
Tipos de funções internas
FUNÇÃO INTERNA DESCRIÇÃO
Agrupam diversos valores, retornando apenas um valor de acordo
Funções de agregação
com as condições preestabelecidas.
Recebem um conjunto de valores e, após execução, retornam
Funções escalares
somente um valor.
Fonte: Elaborado pelo autor (2021).
#PraCegoVer: Quadro que representa dados da função interna de agregação e
escalares e a descrição dessas funções.
2.Funções de agregação, ou de
conjunto
A linguagem SQL implementa diversas funções de agregação, ou de conjunto. Estas
são utilizadas para agregar conjuntos de valores ou resumir informações em único
resultado, facilitando a compreensão da informação processada.
No quadro a seguir, podemos conhecer as funções de agregação disponíveis na
linguagem SQL.
Tipos de funções de agregação, ou de conjunto
FUNÇÃO DE AGREGAÇÃO,
DESCRIÇÃO
OU DE CONJUNTO
Agrega os valores numéricos em um único valor, de acordo com
SUM
as colunas especificadas.
Verifica os valores da coluna informada e retorna o menor valor
MIN
encontrado.
Verifica os valores da coluna informada e retorna o maior valor
MAX
encontrado.
4
Conta o número de registros retornados de acordo com as
COUNT
condições definidas.
Agrega os valores numéricos em um único valor, calculando
AVG a média de todos os valores encontrados, de acordo com as
colunas especificadas.
Fonte: Elaborado pelo autor (2018).
#PraCegoVer: Quadro com funções de agregação bem como a descrição de
cada função.
Agora que conhecemos as funções de agregação disponíveis, podemos avaliar
e aprender quando e como utilizá-las. Veremos que cada uma possui sintaxe e
condições adequadas para ser adotada.
SUM
A função SUM() realiza e retorna o somatório de valores de uma determinada coluna.
Deve ser utilizada somente com atributos numéricos, como float, int, number etc.
Por exemplo, se quisermos somar o total de vendas de uma loja, podemos usar:
Atenção
SELECT SUM(VALORTOTAL) FROM VENDAS
O valor obtido ainda pode ser adotado na própria query para realização de outras
operações. Como exemplo, o gestor da loja pode saber que apenas 40% do valor
total das compras representam o lucro; o restante é referente às despesas de
manutenção. Portanto, é possível criar uma consulta que retorne o lucro final da loja
da seguinte maneira:
Atenção
SELECT SUM(VALORTOTAL) * 0.4 FROM VENDAS
5
MIN
A função MIN() seleciona o menor valor de uma coluna. Deve ser utilizada em
colunas que apresentam apenas valores numéricos ou data.
Por exemplo, se quisermos selecionar a data da última compra realizada no sistema,
podemos usar a seguinte query:
Atenção
SELECT MIN(DATA) FROM VENDAS
MAX
O comando MAX() retorna o valor máximo da coluna em que foi utilizado. Pode ser
usado em colunas que contenham valores numéricos ou data.
Como exemplo, podemos selecionar o maior valor total de venda realizada pela loja:
Atenção
SELECT MAX(VALORTOTAL) FROM LOJA
6
Funções de agregação de valores numéricos
Fonte: Plataforma Deduca (2021).
#PraCegoVer: Imagem que representa as mãos de uma pessoa sinalizando
sobre gráficos em um tablet em preto e branco.
COUNT
Diferentemente das demais funções citadas, o comando COUNT() não realiza o
agrupamento dos valores da coluna em que foi utilizado. Esse comando apenas
conta o número de registros retornados pela sentença que está sendo executada.
Para contar todos os registros, ou seja, o número de linhas retornado, basta utilizar
o comando COUNT(*), com o asterisco dentro dos parênteses. Caso o objetivo seja
contar todas as ocorrências de uma determinada coluna, só é preciso informar a
coluna desejada entre parênteses.
Por exemplo, se precisarmos contar o número de vendas realizadas pela loja,
devemos utilizar o seguinte comando:
Atenção
SELECT COUNT(*) FROM VENDAS
Podemos verificar a quantidade das vendas que foram realizadas para entrega
domiciliar com base na contagem de vendas em que foram informados endereços
para entrega. Nesse caso, a sentença teria a seguinte forma:
7
Atenção
SELECT COUNT(ENDERECOENTREGA) FROM VENDAS
Também podemos obter os mesmos resultados escrevendo a sentença de outra
maneira:
Atenção
SELECT COUNT(*) FROM VENDAS WHERE ENDERECO ENTREGA
IS NOT NULL
O comando DISTINCT pode ser adotado juntamente com a função COUNT(),
para que sejam somadas apenas as ocorrências de itens diferentes na seleção
especificada.
Ainda segundo o nosso exemplo da loja, para contar a quantidade de endereços
diferentes para os quais foram realizadas vendas para entregas em domicílio,
usamos a sentença:
Atenção
SELECT COUNT(DISTINCT ENDERECOENTREGA) FROM VENDAS
AVG
A função AVG() só pode ser aplicada a colunas de valores numéricos, pois a sua
funcionalidade consiste em calcular o valor da média aritmética de todos os
registros encontrados para a coluna informada.
Como exemplo, é possível calcular o valor médio do valor total das vendas realizadas
pela loja com a query:
8
Atenção
SELECT AVG(VALORTOTAL) FROM VENDAS
GROUP BY
Juntamente com as funções de agregação, é comum que seja utilizado o comando
GROUP BY para agrupar os valores encontrados por determinada condição ou
coluna.
No nosso exemplo da loja, para selecionar o valor médio total de compras realizados
para cada endereço de entrega informado, basta usarmos:
Atenção
SELECT AVG(VALORTOTAL) FROM VENDAS GROUP BY ENDERE-
COENTREGA
As funções de agregação são fundamentais para realizar junções e cálculos
diretamente na SQL. Isso evita que o programador precise inserir funções no código
fonte para obter as informações efetuadas pelas funções e o resultado retornado.
3. Funções escalares
São compreendidas como funções escalares aquelas que recebem um ou mais
valores de entrada, mas seu retorno é sempre um valor.
As funções escalares podem ser classificadas de acordo com as categorias
informadas no quadro a seguir.
9
Tipos de funções escalares
FUNÇÃO ESCALAR DESCRIÇÃO
Funções de calendário Executam operações sobre as colunas que guardam datas.
Funções matemáticas Fazem o cálculo de expressões utilizando valores numéricos.
Funções de strings Manipulam valores do tipo string, ou seja, cadeias de caracteres.
Funções de conversão Convertem valores dos diferentes tipos de dados.
Funções de segurança Manipulam controles e parâmetros de segurança da instalação.
Manipulam controles e parâmetros do sistema operacional e do
Funções de ambiente
SGBD.
Exploram o projeto do banco de dados desde a estrutura dos
Funções de metadados
esque-mas às configurações dos atributos definidos nas tabelas.
Fonte: Elaborado pelo autor (2018).
#PraCegoVer: Quadro com funções de agregação bem como a descrição de
cada função.
Agora que estudamos a classificação das funções escalares, podemos identificar os
comandos que fazem parte das principais categorias citadas.
Funções de calendário
A linguagem SQL tem algumas funções para facilitar o processo de manipulação de
valores de datas. Cada SGBD implementa, em sua linguagem própria, outras funções
adotadas para aprimorar aquelas já oferecidas pela SQL.
Primeiramente, precisamos conhecer os tipos de dados relativos a valores de datas
que são reconhecidos pela linguagem SQL. Vejamos o quadro a seguir.
Dados relativos à data reconhecidos pela SQL
TIPO DE DADO DESCRIÇÃO
DATE Trabalha apenas com data.
TIME Trabalha somente com hora.
TIMESTAMP Comporta data e hora.
INTERVAL Trabalha com intervalo entre TIME e TIMESTAMP.
Fonte: Elaborado pelo autor (2021).
10
CURRENT
Para facilitar a manipulação das datas e a definição do valor de data e hora atual do
sistema, para uso na criação de query, a linguagem SQL implementa os seguintes
comandos:
Atenção
CURRENT_DATE(): retorna a data atual do sistema.
SELECT CURRENT_DATE()
CURRENT_TIME: retorna o horário atual do sistema.
SELECT CURRENT_TIME()
CURRENT_TIMESTAMP: retorna o valor de data e hora atuais do
sistema.
SELECT CURRENT_TEMISTAMP
Manipulação de data
Fonte: Plataforma Deduca (2021).
#PraCegoVer: Imagem que representa um calendário.
Se quisermos, por exemplo, filtrar as vendas realizadas na data de hoje, podemos
fazê-lo por meio da comparação entre a data atual do sistema e a data da venda:
11
Atenção
SELECT * FROM VENDAS WHERE DATAVENDA = CURRENT_DATE
É possível realizar operações aritméticas com as datas dentro das próprias sentenças.
Basta fazer uma soma de dias à data de venda retornada pela consulta:
Atenção
SELECT DATAVENDA + 10 WHERE DATAVENDA = CURRENT_DATE
Se for necessário calcular os dias restantes para pagamento do valor de uma
compra feita pela cliente chamada Maria, por exemplo, podemos usar:
Atenção
SELECT DATAPRAZO - CURRENT_DATA FROM VENDAS WHERE
COMPRADOR = ‘MARIA’
BETWEEN
A função BETWEEN define uma condição de intervalo entre datas. Com ela, é
possível selecionar registros em um determinado espaço de tempo.
Como exemplo, podemos filtrar as vendas realizadas desde o dia primeiro de janeiro
até a data de hoje:
12
Atenção
SELECT *FROM VENDAS WHERE DATAVENDA BETWEEN ‘01-01-
2018’ AND CURRENT_DATE
EXTRACT
A função EXTRACT é aplicada a um dado relacionado ao tipo DATA, para extração de
informações nele contidas.
Por exemplo, podemos extrair o ano com:
Atenção
SELECT EXTRACT(ANO FROM DATAVENDA) FROM VENDAS
O mês pode ser extraído da seguinte maneira:
Atenção
SELECT EXTRACT(MONTH FROM DATAVENDA) FROM VENDAS
E o dia:
Atenção
SELECT EXTRACT(DAY FROM DATAVENDA) FROM VENDAS
13
Ainda podemos obter as informações de hora, minuto e segundo apenas usando os
identificadores HOUR, MINUTE e SECOND.
GETDATE
A função GETDATE() retorna o valor de data e hora referentes ao sistema operacional
em que o SGBD se encontra.
Para essa função, não são passados parâmetros. Vejamos como utilizá-la:
Atenção
SELECT GETDADE()
Funções matemáticas
As funções matemáticas realizam operações matemáticas sobre as colunas que
estão indicadas. Algumas delas já foram citadas e explicadas em tópicos anteriores,
como as funções agregadas: SUM, COUNT, AVG, MIN e MAX.
Então, agora vamos ver outras funções matemáticas ainda não citadas.
FIRST
A função FIRST() retorna o primeiro valor encontrado de acordo com a sentença
definida. Não é suportada por alguns SGBDs.
Por exemplo, para selecionar o primeiro nome de cliente encontrado na tabela de
vendas, basta utilizar a sentença:
Atenção
SELECT FIRST(NOME_CLIENTE) FROM VENDAS
14
LAST
O comando LAST é a função contrária à FIRST(). Localiza o último registro que
atenda às condições definidas pela query. Assim como a função FIRST(), não está
disponível na maioria dos SGBDs.
Ainda segundo o nosso exemplo da loja, a sentença para selecionar o último nome
de cliente encontrado na tabela de vendas é:
Atenção
SELECT LAST(NOME_CLIENTE) FROM VENDAS
SQRT
A função SQRT() calcula a raiz quadrada do valor que foi passado para a função. É
necessário que seja indicado somente um valor, cuja raiz quadrada será calculada. O
exemplo a seguir retorna o valor 3.
Atenção
SELECT SQRT(9)
SQUARE
A função SQUARE() faz o cálculo do valor que é passado para a função. Também só
recebe um único valor, cujo quadrado será calculado e retornado. O exemplo a seguir
retorna o valor 9.
15
Atenção
SELECT SQRT(3)
POWER
A função POWER() calcula a potência segundo dois parâmetros. O primeiro
parâmetro é o valor de base; o segundo, a potência a que o primeiro será elevado.
Vejamos:
Atenção
SELECT POWER(2, 3)
16
Fechamento
Hoje, vimos, sobre as funções internas. Além disso, vimos que existem dois tipos de
funções: as funções de agregação, ou de conjunto, e as funções escalares. Assim, o
programador pode escolher entre essas duas funções internas distintas para facilitar
suas ações.
17
Referências
ELMASRI, R. N. Sistema de banco de dados. 6. ed. São Paulo: Pearson, 2010.
HEUSER, C. A. Projeto de banco de dados. Porto Alegre: Bookman, 2011.
MACHADO, F. R. Banco de dados: projeto e implementação. São Paulo: Érica, 2014.
18