Escolar Documentos
Profissional Documentos
Cultura Documentos
1/14
USE BD2N29
go
CREATE TABLE Deprmto
(IdDepto INTEGER NOT NULL,
NomeDepto VARCHAR(20) NOT NULL,
CONSTRAINT PK_Deprmto PRIMARY KEY (IdDepto));
CREATE TABLE Cargo
(IdCargo INTEGER NOT NULL,
Desc_Cargo VARCHAR(40) NOT NULL,
IdcargoConfia INTEGER,
CONSTRAINT PK_Cargo PRIMARY KEY (IdCargo));
CREATE TABLE Projeto
(CodProj INTEGER NOT NULL,
SiglaProf VARCHAR(40) NOT NULL,
DtInicio DATE,
DtFim DATE,
StatusProj VARCHAR(40) NOT NULL,
CONSTRAINT PK_Projeto PRIMARY KEY (CodProj));
CREATE TABLE Divisao
(IdDivisao INTEGER NOT NULL,
IdDepto INTEGER NOT NULL,
NomeDivisao VARCHAR(30) NOT NULL,
CONSTRAINT PK_Divisao PRIMARY KEY(IdDivisao),
CONSTRAINT FK1_Divisao FOREIGN KEY(IdDepto)
REFERENCES Deprmto(IdDepto));
CREATE TABLE Secao
(IdDivisao INTEGER NOT NULL,
IdDepto INTEGER NOT NULL,
IdSecao INTEGER NOT NULL,
NomeDivisao VARCHAR(40) NOT NULL,
CONSTRAINT PK_Secao PRIMARY KEY(IdSecao),
CONSTRAINT FK1_Secao FOREIGN KEY(IdDepto) REFERENCES
Deprmto(IdDepto),
CONSTRAINT FK2_Secao FOREIGN KEY(IdDivisao) REFERENCES
Divisao(IdDivisao));
CREATE TABLE Funcionarios
(IdFuncionario INTEGER NOT NULL,
NomeFuncionario VARCHAR(40) NOT NULL,
DtAdmissao DATE,
IdCargo INTEGER NOT NULL,
VlSalario MONEY,
IdSecao INTEGER NOT NULL,
DtUltferia DATE,
DtDemissao DATE,
CPF VARCHAR(14) NOT NULL,
CONSTRAINT PK_Funcionarios PRIMARY KEY (IdFuncionario),
2/14
DEPARTAMENTOS
Deprmto VALUES (1,'CONTABILIDADE');
Deprmto VALUES (2,'RECURSOS HUMANOS');
Deprmto VALUES (3,'DIRETORIA');
--INSERINDO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
DIVISOES
Divisao VALUES
Divisao VALUES
Divisao VALUES
Divisao VALUES
Divisao VALUES
Divisao VALUES
--INSERINDO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
INSERT INTO
CARGOS
Cargo VALUES
Cargo VALUES
Cargo VALUES
Cargo VALUES
Cargo VALUES
(1,1,'CONTABIL CHEFE');
(2,1,'CONTABIL ATENDIMENTO');
(3,2,'RH ATENDIMENTO');
(4,2,'RH INTERNO');
(5,3,'DIRETORES ACIONISTAS');
(6,3,'DIRETORES DEPARTAMENTOS');
(1,'RECEPCIONISTA',1);
(2,'DIRETOR',1);
(3,'AUXILIAR ADM',1);
(4,'CONTADOR',1);
(5,'AUXILIAR CONTABIL',1);
--INSERINDO PROJETOS
INSERT INTO Projeto
VALUES(1,'ATM','13/10/2014','23/10/2014','REQUISITOS');
INSERT INTO Projeto VALUES(2,'COM','13/10/2014','01/11/2014','EM
ANDAMENTO');
INSERT INTO Projeto VALUES(3,'SQL','18/10/2014','23/11/2014','NAO
INICIADO');
INSERT INTO Projeto VALUES(4,'PAC','18/10/2014','28/10/2014','NAO
INICIADO');
--INSERINDO SECOES
INSERT INTO Secao VALUES (1,1,1,'CONTADORES');
INSERT INTO Secao VALUES (3,2,2,'ATENDIMENTO ESPECIAL');
--INSERINDO FUNCIONARIOS
3/14
4/14
5/14
5)
USE BD2N28
GO
CREATE PROCEDURE GERA_RELATORIO
AS
DECLARE CurSecao
CURSOR FOR SELECT IDDEPTO,IDDIVISAO,IDSECAO FROM SECAO ORDER BY
IDSECAO ,IDDIVISAO,IDDEPTO
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
@IdDept INTEGER
@IdDivisao INTEGER
@IdSecao INTEGER
@COUNT INTEGER
@ERRO INTEGER
@IDFUNC INTEGER
@NMFUNC VARCHAR(40)
@CARGO VARCHAR(40)
@SALARIO MONEY
DECLARE CurNomes
CURSOR FOR
SELECT
IdFuncionario,NomeFuncionario,C.Desc_Cargo,VlSalario
FROM Funcionarios F INNER JOIN Cargo C ON
C.IdCargo = F.IdCargo
6/14
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT CONVERT(VARCHAR(20), @IDFUNC) + ' '
+ @NMFUNC + ' CARGO ' + @CARGO + ' SALARIO: '+ CONVERT(VARCHAR(20),
@SALARIO)
FETCH NEXT FROM CurNomes INTO @IDFUNC,
@NMFUNC, @CARGO,@SALARIO
END
CLOSE CurNomes
DEALLOCATE CurNomes
END
PRINT 'Total Funcionrios SEO '+ CONVERT(VARCHAR(20),
@IDSECAO)+' QTD.' + CONVERT(VARCHAR(20), @COUNT)
IF (@@ERROR <> 0) BEGIN
SET @ERRO = @@ERROR
BREAK
END
FETCH NEXT FROM CurSecao INTO @IdDept, @IdDivisao, @IdSecao
END
CLOSE CurSecao
DEALLOCATE CurSecao
GO
IF(@ERRO = 0)
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
EXEC GERA_RELATORIO
7/14
6)
USE BD2N28
GO
CREATE TABLE RAMAIS(
CODRAMAL INTEGER NOT NULL,
NUMRAMAL VARCHAR(4),
NOMERAMAL VARCHAR(20),
IDFUNCIONARIO INTEGER NOT NULL,
CONSTRAINT PK_RAMAIS PRIMARY KEY (CODRAMAL),
CONSTRAINT FK1_RAMAIS FOREIGN KEY(IDFUNCIONARIO) REFERENCES
FUNCIONARIOS(IDFUNCIONARIO))
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
RAMAIS
RAMAIS
RAMAIS
RAMAIS
RAMAIS
RAMAIS
RAMAIS
VALUES(1,'0101','DIRETORIA',1)
VALUES(2,'0101','DIRETORIA',6)
VALUES(3,'1234','RECEPCAO',1)
VALUES(4,'9911','CONTABILIDADE',1)
VALUES(5,'9000','FINANCEIRO',6)
VALUES(6,'0000','EXCLUSIVO',1)
VALUES(7,'9999','GATO NET',3)
8/14
7)
9/14
UPDATE Funcionarios
SET VlSalario = 20000
WHERE IdFuncionario = 1
10/14
UPDATE Funcionarios
SET VlSalario = 10000
WHERE IdFuncionario = 1
8)
CREATE TRIGGER DEMISSAO ON FUNCIONARIOS
FOR UPDATE
AS
DECLARE @DEM_NOVO DATE = (SELECT DTDEMISSAO FROM INSERTED)
IF (@DEM_NOVO IS NOT NULL)
BEGIN
DECLARE @ID INTEGER = (SELECT IDFUNCIONARIO FROM INSERTED)
UPDATE FUNC_PROJETO
SET DTALOCFIM = @DEM_NOVO
WHERE IDFUNCIONARIO = @ID
END
GO
11/14
UPDATE Funcionarios
SET DtDemissao = '12/10/2014'
WHERE IDFUNCIONARIO = 1
9)
Desculpa porem no entendi o problema.
Adaptar as Tabelas para que o Funcionrio possa ser alocado em
mais de um intervalo de datas ao mesmo Projeto
Na tabela Func_Projeto ele pode ser alocado em quantos projetos quiser e
independente do intervalo entre as datas.
10)
USE BD2N28
12/14
GO
CREATE TABLE #PROJETO_ANALISTA(ID_PROJ INTEGER,SIGLA
VARCHAR(4),QTD_ANALISTAS INTEGER,QTD_PROGRAMADORES INTEGER)
GO
INSERT INTO #PROJETO_ANALISTA(ID_PROJ,SIGLA)
SELECT DISTINCT P.CodProj,P.SiglaProf FROM PROJETO P
INNER JOIN FUNC_PROJETO FP ON P.CODPROJ = FP.CODPROJ
GO
--ANALISTAS DOS PROJETOS
SELECT COUNT(*) AS 'TRABALHANDO',P.SiglaProf INTO #PROJ
FROM PROJETO P
INNER JOIN FUNC_PROJETO FP ON P.CODPROJ = FP.CODPROJ
INNER JOIN Funcionarios F ON F.IdFuncionario = FP.IdFuncionario
WHERE IdCargo >= 20 AND IdCargo <=29
GROUP BY SIGLAPROF
UPDATE #PROJETO_ANALISTA
SET QTD_ANALISTAS = B.TRABALHANDO
FROM #PROJETO_ANALISTA A ,#PROJ
B
WHERE A.SIGLA= B.SiglaProf
--PROGRAMADORES DOS PROJETOS
SELECT COUNT(*) AS 'TRABALHANDO',P.SiglaProf INTO #PROJ2
FROM PROJETO P
INNER JOIN FUNC_PROJETO FP ON P.CODPROJ = FP.CODPROJ
INNER JOIN Funcionarios F ON F.IdFuncionario = FP.IdFuncionario
WHERE IdCargo >= 10 AND IdCargo <=19
GROUP BY SIGLAPROF
UPDATE #PROJETO_ANALISTA
SET QTD_PROGRAMADORES = B.TRABALHANDO
FROM #PROJETO_ANALISTA A ,#PROJ2
B
WHERE A.SIGLA= B.SiglaProf
GO
SELECT SIGLA FROM #PROJETO_ANALISTA
WHERE ISNULL(QTD_ANALISTAS,0) < ISNULL(QTD_PROGRAMADORES,0)
13/14
14/14