[英]SQL Queries/Subqueries
我想知道是否有人可以幫助我進行此查詢? 我非常喜歡這個:
“顯示每種類型的OWNER的工作時間總和,但不包括具有“初級”經驗級別的員工的服務,並排除任何少於三個成員的類型。
CREATE TABLE OWNER
(
OwnerID Int NOT NULL IDENTITY (1,1) PRIMARY KEY,
OwnerName Char(30) NOT NULL,
OwnerEmail VarChar(100) NULL,
OwnerType Char(15) NOT NULL,
);
CREATE TABLE PROPERTY
(
PropertyID Int NOT NULL IDENTITY(1,1) PRIMARY KEY,
PropertyName Char(30) NOT NULL,
Street Char(20) NOT NULL,
City Char(25) NOT NULL,
State Char(10) NOT NULL,
Zip Char(5) NOT NULL,
OwnerID Int NOT NULL,
CONSTRAINT PROP_OWN_FK FOREIGN KEY(OwnerID)
REFERENCES OWNER(OwnerID),
);
CREATE TABLE GG_EMPLOYEE
(
EmployeeID Int NOT NULL IDENTITY(1,1) PRIMARY KEY,
LastName Char(35) NOT NULL,
FirstName Char(35) NOT NULL,
CellPhone Char(20) NOT NULL,
ExperienceLevel Char(25) NOT NULL,
);
CREATE TABLE SERVICE
(
PropertyID Int NOT NULL,
EmployeeID Int NOT NULL,
ServiceDate Char(15) NOT NULL,
HoursWorked Char(5) NOT NULL,
CONSTRAINT SERVICE_PK PRIMARY KEY(PropertyID, EmployeeID, ServiceDate),
CONSTRAINT SER_PRO_FK FOREIGN KEY(PropertyID)
REFERENCES PROPERTY(PropertyID),
CONSTRAINT SER_GG_EMP_FK FOREIGN KEY(EmployeeID)
REFERENCES GG_EMPLOYEE(EmployeeID),
);
Select Tbl1.OwnerName,Sum(TBl2.TTLHoursWorked) as TTLHoursWorked
From
(
Select TBl1.OwnerID,Tbl1.OwnerName,Tbl2.PropertyID,Tbl2.PropertyName
From Owner Tbl1
Inner Join
PROPERTY Tbl2
On Tbl1.OwnerID=Tbl2.OwnerID
)Tbl1
Inner Join
(
Select Tbl2.PropertyID,Cast(HoursWorked as numeric(5,4)) as TTLHoursWorked
From (Select * From GG_EMPLOYEE Where ExperienceLevel in(Select ExperienceLevel
From GG_EMPLOYEE
Where ExperienceLevel<>'Junior'
Group by ExperienceLevel Having Count(*)>3))as Tbl1
Inner Join SERVICE as Tbl2
On Tbl1.EmployeeID=Tbl2.EmployeeID
)Tbl2
On Tbl1.PropertyID=Tbl2.PropertyID
Group by Tbl1.OwnerName
SELECT o.OwnerType, SUM(CAST(s.HoursWorked as INT))
FROM
owner o
INNER JOIN property p
On o.ownerid = p.ownerid
INNER JOIN service s
ON p.propertyid = s.propertyid
INNER JOIN GG_employee e
On s.employeeid = e.employeeid
And e.experiencelevel <> 'junior'
GROUP BY
O.ownertype
HAVING
COUNT(DISTINCT o.ownerid) >= 3
我在手機上時,請原諒拼寫錯誤和大寫。
SELECT o.OwnerType, SUM(Cast(HoursWorked as INT)) Sum_HrsWorked
FROM SERVICE s
INNER JOIN GG_EMPLOYEE e
ON s.EmployeeId = e.EmployeeId
INNER JOIN PROPERTY p
ON s.PropertyId = p.PropertyId
INNER JOIN OWNER o
ON o.OwnerID = p.OwnerID
WHERE e.ExperienceLevel <> 'JUNIOR'
Group By o.OwnerType
HAVING COUNT(OwnerType) > 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.