-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQLQuery3.sql
More file actions
163 lines (118 loc) · 3.43 KB
/
SQLQuery3.sql
File metadata and controls
163 lines (118 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/*
CTE
*/
WITH CTE_Employee as
(SELECT FirstName, LastName, Gender, Salary,
Count(Gender) Over (partition by Gender) As TotalGender,
AVG(Salary) Over (Partition by Gender) As AvgGenderSalary
From EmployeeDemographics
Inner Join EmployeeSalary
On EmployeeDemographics.EmployeeID = EmployeeSalary.EmployeeID
Where EmployeeSalary.Salary > '45000'
)
--Select * From CTE_Employee
Select FirstName, TotalGender, AvgGenderSalary From CTE_Employee
/*
Temp_Table
*/
CREATE TABLE #Temp_Employee
(EmployeeID int,
JobTitle varchar(50),
Salary int
)
INSERT INTO #Temp_Employee VALUES
(10010,'HR',45000)
INSERT INTO #Temp_Employee
SELECT *
FROM EmployeeSalary
Select * From #Temp_Employee
Drop Table IF Exists #Temp_Employee2
CREATE TABLE #Temp_Employee2(
JobTitle varchar(50),
EmployeePerJob int,
AvgAge int,
AvgSalary int)
INSERT INTO #Temp_Employee2
SELECT JobTitle, Count(JobTitle),Avg(Age),Avg(Salary)
From EmployeeDemographics
Inner Join EmployeeSalary
On EmployeeDemographics.EmployeeID = EmployeeSalary.EmployeeID
Group By JobTitle
Select * From #Temp_Employee2
/*
String Functions TRIM, LTRIM, RTRIM, REPLACE, UPPER, LOWER, SubString
*/
CREATE TABLE EmployeeErrors
(EmployeeID varchar(50),
FirstName varchar(50),
LastName varchar(50))
Insert Into EmployeeErrors Values
('1001 ','Jimbo','Halbert'),
(' 1002','Pamela', 'Beasely'),
('1005','TOby', 'Flenderson - Fires')
SELECT *
From EmployeeErrors
--Using TRIM, LTRIM, RTRIM
Select EmployeeID , TRIM(EmployeeID) AS TRIMID
From EmployeeErrors
Select EmployeeID , LTRIM(EmployeeID) AS TRIMID
From EmployeeErrors
Select EmployeeID , RTRIM(EmployeeID) AS TRIMID
From EmployeeErrors
--Using Replace
Select LastName , REPLACE(LastName, '- Fires','') as LastNameFixed
From EmployeeErrors
--Using SubString
Select FirstName, SUBSTRING(FirstName,2,3)
From EmployeeDemographics
Select demo.FirstName,SUBSTRING(demo.FirstName,1,3) , er.FirstName, SUBSTRING(er.FirstName,1,3)
From EmployeeDemographics as demo
Inner Join EmployeeErrors as er
On SUBSTRING(demo.FirstName,1,3) = SUBSTRING(er.FirstName,1,3)
--Using UPPER And Lower
Select FirstName,UPPER(FirstName) as UPPER_FirstName, LOWER(FirstName) as LOWER_FirstName
From EmployeeDemographics
/*
PROCEDURE
*/
Create Procedure Test
AS
Select *
From EmployeeDemographics
EXEC Test
Create Procedure Temp_Employee
@JobTitle nvarchar(100)
As
CREATE TABLE #Temp_Employee3(
JobTitle varchar(50),
EmployeePerJob int,
AvgAge int,
AvgSalary int)
INSERT INTO #Temp_Employee3
SELECT JobTitle, Count(JobTitle),Avg(Age),Avg(Salary)
From EmployeeDemographics
Inner Join EmployeeSalary
On EmployeeDemographics.EmployeeID = EmployeeSalary.EmployeeID
Where JobTitle = @JobTitle
Group By JobTitle
Select * From #Temp_Employee3
EXEC Temp_Employee @JobTitle = 'Salesman'
/*
SubQueries (in the select, From, Where Statement)
*/
--SubQuery in Select
Select EmployeeID, Salary, (Select Avg(Salary) From EmployeeSalary) As AvgSalary
From EmployeeSalary
--DO with Partition By
Select EmployeeID, Salary, Avg(Salary) Over() As AvgSalary
From EmployeeSalary
--SubQuery in From
Select a.EmployeeID, a.AvgSalary
From(Select EmployeeID, Salary, Avg(Salary) Over() As AvgSalary
From EmployeeSalary) a
--SunQuery in Where
Select EmployeeID, Salary, JobTitle
From EmployeeSalary
Where EmployeeID In (
Select EmployeeID
From EmployeeDemographics)