Created
October 13, 2024 23:46
-
-
Save guidani/3e0b3453366f7b296c8dd7330d1171a6 to your computer and use it in GitHub Desktop.
queryCriacaoTabelasFuncoesViewsProcedures.sql
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Tabela Clientes | |
CREATE TABLE Clientes ( | |
Id_cliente INT PRIMARY KEY IDENTITY(1,1), | |
Nome_Cliente VARCHAR(100) NOT NULL, | |
Numero_Cartao VARCHAR(16) NOT NULL UNIQUE | |
); | |
-- Tabela Transacoes | |
CREATE TABLE Transacoes ( | |
Id INT PRIMARY KEY IDENTITY(1,1), | |
Id_Transacao VARCHAR(255), | |
Numero_Cartao VARCHAR(16) NOT NULL, | |
Data_Transacao DATETIME NOT NULL, | |
Valor_Transacao DECIMAL(10, 2) NOT NULL, | |
Descricao VARCHAR(MAX), | |
); | |
-- Stored Procedure para calcular o total de transa��es em um per�odo | |
CREATE PROCEDURE sp_CalculaTotalTransacoes | |
@Data_Inicial DATETIME, | |
@Data_Final DATETIME | |
AS | |
BEGIN | |
SELECT | |
Numero_Cartao, | |
SUM(Valor_Transacao) AS Valor_Total, | |
COUNT(Id_Transacao) AS Quantidade_Transacoes | |
FROM Transacoes | |
WHERE Data_Transacao BETWEEN @Data_Inicial AND @Data_Final | |
GROUP BY Numero_Cartao; | |
END; | |
-- Fun��o para determinar a categoria da transa��o | |
CREATE FUNCTION fn_CategoriaTransacao (@Valor_Transacao DECIMAL(10, 2)) | |
RETURNS VARCHAR(50) | |
AS | |
BEGIN | |
DECLARE @Categoria VARCHAR(50); | |
IF @Valor_Transacao > 1000 | |
SET @Categoria = 'Alta'; | |
ELSE IF @Valor_Transacao BETWEEN 500 AND 1000 | |
SET @Categoria = 'M�dia'; | |
ELSE | |
SET @Categoria = 'Baixa'; | |
RETURN @Categoria; | |
END; | |
-- View combinando Clientes e Transacoes, utilizando a fun��o para a categoria | |
CREATE VIEW vw_ClientesTransacoes | |
AS | |
SELECT | |
C.Nome_Cliente, | |
T.Numero_Cartao, | |
T.Valor_Transacao, | |
T.Data_Transacao, | |
dbo.fn_CategoriaTransacao(T.Valor_Transacao) AS Categoria | |
FROM Transacoes T | |
JOIN Clientes C ON T.Numero_Cartao = C.Numero_Cartao; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment