簡體   English   中英

SQL查詢/子查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM