SQL查询/子查询

时间:2016-09-29 03:26:32

标签: sql

我想知道是否有人可以帮我解决这个问题?我非常坚持这个:

“显示每种类型的所有者的工作小时数,但不包括具有ExperienceLevel of Junior的员工的服务,并排除任何少于三名成员的类型。”

Lisas-MBP:Code LMS$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 2.5.1
- RUBY VERSION: 2.3.1 (2016-04-26 patchlevel 112) [x86_64-darwin15]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.3.0
- USER INSTALLATION DIRECTORY: /Users/LMS/.gem/ruby/2.3.0
- RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- SPEC CACHE DIRECTORY: /Users/LMS/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/2.3.1_1/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-15
- GEM PATHS:
 - /usr/local/lib/ruby/gems/2.3.0
 - /Users/LMS/.gem/ruby/2.3.0
 - /usr/local/Cellar/ruby/2.3.1_1/lib/ruby/gems/2.3.0
- GEM CONFIGURATION:
 - :update_sources => true
 - :verbose => true
 - :backtrace => false
 - :bulk_threshold => 1000
- REMOTE SOURCES:
 - https://rubygems.org/
- SHELL PATH:
 - /Library/Frameworks/Python.framework/Versions/3.4/bin
 - /Library/Frameworks/Python.framework/Versions/3.4/bin
 - /Library/Frameworks/Python.framework/Versions/3.5/bin
 - /Library/Frameworks/Python.framework/Versions/3.5/bin
 - /opt/local/bin
 - /opt/local/sbin
 - /usr/local/bin
 - /usr/local/bin
 - /usr/bin
 - /bin
 - /usr/sbin
 - /sbin
 - /user/local/bin
 - /Users/LMS/.rvm/bin
 - /Applications/Postgres.app/Contents/Versions/9.4/bin

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

请原谅我手机上的拼写错误和大写字母。

答案 2 :(得分:0)

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
相关问题