Colunas Calculadas no SQL Server

Colunas Calculadas no SQL Server

As colunas calculadas são colunas que possuem o conteúdo baseado nas informações gravadas em outras colunas, ao invés de depender de dados inseridos pelo usuário.

As informação destas colunas, por padrão, são geradas no momento da consulta, mas, podem ser persistidas no banco de dados.

Vamos ver um exemplo, primeiro, vamos criar a nossa tabela de testes e carregar algumas informações:

DROP TABLE IF EXISTS alunos;

CREATE TABLE alunos (

   ID INT  IDENTITY(1,1) PRIMARY KEY

  ,primeiro_nome    VARCHAR(255)    NOT NULL

  ,sobrenome    VARCHAR(255)    NOT NULL

  ,mensalidade  DECIMAL(18,2)   NOT NULL

);

INSERT INTO alunos VALUES

 ('João','Silva'  ,350)

,('Matheus', 'Santos',400)

,('Lucas', 'Azevedo',450)

,('Thiago', 'Fernandes',500);


SELECT * FROM alunos;

Agora vamos criar uma consulta que além destes dados, retorne o nome completo e o valor gasto por ano. A consulta vai ficar da seguinte forma:

SELECT Id ,primeiro_nome ,sobrenome, mensalidade

      ,CONCAT(primeiro_nome, ' ', sobrenome) AS nome_completo

      ,(mensalidade * 12) AS valor_ano 

FROM  alunos;

Para juntar o valor das colunas primeiro_nome e sobrenome, utilizamos a função CONCAT, perceba que inserimos um espaço em branco entre as duas colunas. Para o cálculo da coluna valor_ano, fizemos a multiplicação da mensalidade.

Perceba que estes novos campos existem apenas no resultados desta consulta. Para que eles façam parte da tabela, vamos precisar fazer a seguinte alteração:

ALTER TABLE alunos DROP COLUMN IF EXISTS nome_completo;

ALTER TABLE alunos DROP COLUMN IF EXISTS valor_ano;

ALTER TABLE alunos ADD   nome_completo As (CONCAT(primeiro_nome, ' ',sobrenome))

ALTER TABLE alunos ADD   valor_ano As (mensalidade * 12);

Agora, se você fizer novamente a consulta desta forma:

SELECT Id ,primeiro_nome ,sobrenome,mensalidade ,nome_completo ,valor_ano  FROM  alunos;

Vai ter o mesmo resultado da primeira consulta!

Apesar de agora as duas novas colunas fazerem parte da tabela, os campos ainda são calculados toda vez que a tabela é consultada. Para guardar os dados dentro destes campos, o nosso ALTER TABLE  precisa ter apenas uma alteração, no final precisamos acrescentar PERSISTED. O nosso ALTER TABLE vai ficar da seguinte forma:

ALTER TABLE alunos

ADD   nome_completo As (CONCAT(primeiro_nome, ' ',sobrenome)) PERSISTED

ALTER TABLE alunos

ADD   valor_ano As (mensalidade * 12) PERSISTED

 

 

Outros conteudos que podem ser de seu interesse

Blogs e tutoriais para estudar data science
04/12/2022SQL

Blogs e tutoriais para estudar data science

Uma lista de sites para você aprofundar seus conhecimentos de Data Science

Saiba mais...
SQL vs Pandas - Agrupamento e frequências
31/03/2024SQL

SQL vs Pandas - Agrupamento e frequências

Veja como agrupar dados no SQL e no Pandas e fazer o cálculo de frequências

Saiba mais...

Conteúdo sobre banco de dados sem complicação!