Skip to content

Update Stored Procedures.sql #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 65 additions & 54 deletions Stored Procedures.sql
Original file line number Diff line number Diff line change
@@ -1,59 +1,70 @@
/*

Today's Topic: Stored Procedures

Today's Topic: Improved Stored Procedures
*/


CREATE PROCEDURE Temp_Employee
-- Procedure 1: Show summary by JobTitle
CREATE OR ALTER PROCEDURE dbo.Temp_Employee
AS
DROP TABLE IF EXISTS #temp_employee
Create table #temp_employee (
JobTitle varchar(100),
EmployeesPerJob int ,
AvgAge int,
AvgSalary int
)


Insert into #temp_employee
SELECT JobTitle, Count(JobTitle), Avg(Age), AVG(salary)
FROM SQLTutorial..EmployeeDemographics emp
JOIN SQLTutorial..EmployeeSalary sal
ON emp.EmployeeID = sal.EmployeeID
group by JobTitle

Select *
From #temp_employee
GO;




CREATE PROCEDURE Temp_Employee2
@JobTitle nvarchar(100)
BEGIN
SET NOCOUNT ON;

DROP TABLE IF EXISTS #temp_employee;

CREATE TABLE #temp_employee (
JobTitle NVARCHAR(100),
EmployeesPerJob INT,
AvgAge INT,
AvgSalary INT
);

INSERT INTO #temp_employee (JobTitle, EmployeesPerJob, AvgAge, AvgSalary)
SELECT
emp.JobTitle,
COUNT(*) AS EmployeesPerJob,
AVG(emp.Age) AS AvgAge,
AVG(sal.Salary) AS AvgSalary
FROM SQLTutorial..EmployeeDemographics emp
INNER JOIN SQLTutorial..EmployeeSalary sal
ON emp.EmployeeID = sal.EmployeeID
GROUP BY emp.JobTitle;

SELECT * FROM #temp_employee;
END
GO

-- Procedure 2: Filter by JobTitle
CREATE OR ALTER PROCEDURE dbo.Temp_Employee_ByTitle
@JobTitle NVARCHAR(100)
AS
DROP TABLE IF EXISTS #temp_employee3
Create table #temp_employee3 (
JobTitle varchar(100),
EmployeesPerJob int ,
AvgAge int,
AvgSalary int
)


Insert into #temp_employee3
SELECT JobTitle, Count(JobTitle), Avg(Age), AVG(salary)
FROM SQLTutorial..EmployeeDemographics emp
JOIN SQLTutorial..EmployeeSalary sal
ON emp.EmployeeID = sal.EmployeeID
where JobTitle = @JobTitle --- make sure to change this in this script from original above
group by JobTitle

Select *
From #temp_employee3
GO;


exec Temp_Employee2 @jobtitle = 'Salesman'
exec Temp_Employee2 @jobtitle = 'Accountant'
BEGIN
SET NOCOUNT ON;

DROP TABLE IF EXISTS #temp_employee;

CREATE TABLE #temp_employee (
JobTitle NVARCHAR(100),
EmployeesPerJob INT,
AvgAge INT,
AvgSalary INT
);

INSERT INTO #temp_employee (JobTitle, EmployeesPerJob, AvgAge, AvgSalary)
SELECT
emp.JobTitle,
COUNT(*) AS EmployeesPerJob,
AVG(emp.Age) AS AvgAge,
AVG(sal.Salary) AS AvgSalary
FROM SQLTutorial..EmployeeDemographics emp
INNER JOIN SQLTutorial..EmployeeSalary sal
ON emp.EmployeeID = sal.EmployeeID
WHERE emp.JobTitle = @JobTitle
GROUP BY emp.JobTitle;

SELECT * FROM #temp_employee;
END
GO

-- Example calls
EXEC dbo.Temp_Employee;
EXEC dbo.Temp_Employee_ByTitle @JobTitle = 'Salesman';
EXEC dbo.Temp_Employee_ByTitle @JobTitle = 'Accountant';