Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

sql =====================================table sql==============================

ID: 3699408 • Letter: S

Question

sql

=====================================table sql=====================================

use APC
Create TABLE EMPLOYEE (
EmployeeNumber int NOT NULL IDENTITY (1,1),
FirstName Char(25) NOT NULL,
LastName Char(25) NOT NULL,
Department Char(35) NOT NULL DEFAULT 'Human Resources',
Phone Char(12) NULL,
Email VarChar(100) NOT NULL UNIQUE,
CONSTRAINT EMPLOYEE_PK PRIMARY KEY(EmployeeNumber)
);

use APC
CREATE TABLE DEPARTMENT (
DepartmentName Char(35) NOT NULL,
BudgetCode Char(30) NOT NULL,
OfficeNumber Char(15) NOT NULL,
Phone Char(15) NOT NULL,
CONSTRAINT DEPARTMENT_PK PRIMARY KEY(DepartmentName)
);
Use APC
Create TABLE PROJECT (
ProjectID Int NOT NULL IDENTITY (1000,100),
ProjectName Char(50) NOT NULL,
Department Char(35) NOT NULL,
MaxHours Numeric(8,2) NOT NULL DEFAULT 100,
StartDate DateTime NULL,
EndDate DateTime NULL,
CONSTRAINT ASSIGNMENT_PK PRIMARY KEY(ProjectID)
);

Use APC
Create TABLE ASSIGNMENT (
ProjectID Int NOT NULL,
EmployeeNumber Int NOT NULL,
HoursWorked Numeric(6,2) NULL,
);

=====================================================================================

===============================data sql================================================

use APC

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Mary', 'Jacobs', 'Administration', '360-285-8110', 'Mary.Jacobs@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Rosalie', 'Jackson', 'Administration','360-285-8120','Rosalie.Jackson@APC.com');
  
INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Richard', 'Bandalone', 'Legal','360-285-8210','Richard.Bandalone@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Tom', 'Caruthers', 'Accounting','360-285-8310','Tom.Caruthers@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Heather', 'Jones', 'Accounting','360-285-8320','Heather.Jones@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Mary', 'Abernathy', 'Finance','360-285-8410','Mary.Abernathy@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('George', 'Smith', 'Human Resources','360-285-8510','Geroge.Smith@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Tom', 'Jackson', 'Production','360-287-8610','Tom.Jackson@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('George', 'Jones', 'Production','360-287-8620','George.Jones@APC.com');

INSERT INTO EMPLOYEE
(FirstName, LastName, Department, Phone, Email)
VALUES('Ken', 'Numoto', 'Marketing','360-287-8710','Ken.Numoto@APC.com');
  
Use APC

INSERT INTO DEPARTMENT VALUES(
'Administration', 'BC-100-10','BLDG01-300','360-285-8100');

INSERT INTO DEPARTMENT VALUES(
'Legal', 'BC-200-10','BLDG01-200','360-285-8200');

INSERT INTO DEPARTMENT VALUES(
'Accounting', 'BC-300-10','BLDG01-100','360-285-8300');

INSERT INTO DEPARTMENT VALUES(
'Finance', 'BC-400-10','BLDG01-140','360-285-8400');

INSERT INTO DEPARTMENT VALUES(
'Human Resources', 'BC-500-10','BLDG01-180','360-285-8500');

INSERT INTO DEPARTMENT VALUES(
'Production', 'BC-600-10','BLDG02-100','360-287-8600');

INSERT INTO DEPARTMENT VALUES(
'Marketing', 'BC-700-10','BLDG02-200','360-287-8700');

INSERT INTO DEPARTMENT VALUES(
'InfoSystems', 'BC-800-10','BLDG02-270','360-287-8800');


Use assignment3

INSERT INTO PROJECT VALUES
('2014 Q3 Product Plan', 'Marketing', 135.00, '10-MAY-14', '15-JUN-14');
  

INSERT INTO PROJECT VALUES
('2014 Q3 Portfolio Analysis', 'Finance', 120.00, '05-JUL-14', '25-JUL-14');


INSERT INTO PROJECT VALUES
('2014 Q3 Tax Preparation', 'Accounting', 145.00, '10-AUG-14', '15-AUG-14');


INSERT INTO PROJECT VALUES
('2014 Q4 Product Plan', 'Marketing', 150.00, '10-AUG-14', '15-SEP-14');


INSERT INTO PROJECT (ProjectName, Department, MaxHours, StartDate)
VALUES
('2014 Q4 Portfolio Analysis', 'Finance', 140.00, '05-OCT-14');
  
Use APC

INSERT INTO ASSIGNMENT VALUES
(1000, 1, 30.0);
  
INSERT INTO ASSIGNMENT VALUES
(1000, 8, 75.0);
  
INSERT INTO ASSIGNMENT VALUES
(1000, 10, 55.0);
  
INSERT INTO ASSIGNMENT VALUES
(1100, 4, 40.0);
  
INSERT INTO ASSIGNMENT VALUES
(1100, 6, 25.0);
INSERT INTO ASSIGNMENT VALUES
(1200, 1, 25.0);
  
INSERT INTO ASSIGNMENT VALUES
(1200, 2, 20.0);
INSERT INTO ASSIGNMENT VALUES
(1200, 4, 45.0);
INSERT INTO ASSIGNMENT VALUES
(1200, 5, 40.0);
  
INSERT INTO ASSIGNMENT VALUES
(1300, 1, 35.0);

INSERT INTO ASSIGNMENT VALUES
(1300, 8, 80.0);

INSERT INTO ASSIGNMENT VALUES
(1300, 10, 50.0);

INSERT INTO ASSIGNMENT VALUES
(1400, 4, 15.0);

INSERT INTO ASSIGNMENT VALUES
(1400, 5, 10.0);

INSERT INTO ASSIGNMENT VALUES
(1400, 6, 27.5);

=============================================================================

omit the following question from Part B as there is no data in the PROJECT Table:

Write a stored procedure that takes a project id and reports on which employees worked how many hours on that specific project

Insert the code for your Second Stored Procedure here.

For Part C you may use an audit table similar to the following:

CREATE TABLE EmployeeAudit (

Audit_ID INT Identity(1,1),

Emp_ID INT,

modified_by VARCHAR(64),

Modified_date DATETIME,

Modified_action VARCHAR(64)

)

Q.

part a

1. Write a function that given an employees first and last name, a username is generated for that employee. The username should be in the format of the first name + last initital ,

for example Harry Porter would be 'harryp'.

part b

1.Write a stored procedure that returns employees and departments based on the phone number.

2. Write a stored procedure that takes a project id and reports on which employees worked how many hours on that specific project

part c

Write a trigger that logs updates (UPDATE, INSERT, DELETE) to the employee table. The trigger should record all the previous values in addition to the date and time logs as well as the user that modified the record.

Explanation / Answer

1.

Write a function that given an employees first and last name, a username is generated for that employee. The username should be in the format of the first name + last initital ,

for example Harry Porter would be 'harryp'.

ANSWER:

CREATE FUNCTION [dbo].[fnGetUserName]

(

@firstname nvarchar(50),

@lastname nvarchar(50)

)

RETURNS NVARCHAR(100)

AS

BEGIN

DECLARE @userName nvarchar(100)

IF(@firstname IS NOt NULL AND @lastname is not null)

BEGIN

SELECT @userName = (@firstname + SUBSTRING(@lastname,1,1))

ENd

RETURN @userName

END

SELECT dbo.fnGetUserName('Harry','potter')

2.

ALTER PROCEDURE dbo.p_get_employee_and_department_by_phone

@phoneNumber nvarchar(100)

AS

SELECT FirstName,LastName,Department FROM EMPLOYEE WHERE Phone = @phoneNumber

GO

execute p_get_employee_and_department_by_phone '360-285-8210'

3.

CREATE PROCEDURE dbo.p_get_report_by_project_id

@projectID INT

AS

SELECT EMP.FirstName,ASG.HoursWorked,PRJ.ProjectName FROM EMPLOYEE EMP

JOIN ASSIGNMENT ASG ON ASG.EmployeeNumber = EMP.EmployeeNumber

JOIN PROJECT PRJ ON PRJ.ProjectID = ASG.ProjectID

WHERE PRJ.ProjectID = @projectID

GO

execute p_get_report_by_project_id 1000