【发布时间】:2017-08-22 03:03:15
【问题描述】:
希望能得到一些帮助。刚接触 SQL 并试图保持头脑清醒。
我接到了这个任务:
“使用 HAVING,确定哪些直接下属的平均工资最低。”
我的逻辑是在一个派生表上进行连接,该表将计算每个拥有直接下属的经理的船员平均工资。然后,此结果将通过 HAVING 子句过滤为 MIN 值。
SELECT Flash.firstname, Flash.lastname, Wally.AVGSalary,
Wally.[Direct Reports] FROM CrewMembers Flash
JOIN
(
SELECT Barry.crewMemberId, AVG(Zoom.salary) AS 'AVGSalary', COUNT(Zoom.firstname) AS 'Direct Reports'
FROM CrewMembers Barry
JOIN CrewMembers Zoom
ON Zoom.managerId = Barry.crewMemberId
GROUP BY Barry.crewMemberId
)
AS Wally ON Wally.crewMemberId = Flash.crewMemberId
GROUP BY Flash.firstname, Flash.lastname, Wally.AVGSalary, Wally.[Direct Reports]
HAVING MIN(Wally.AVGSalary) in (Wally.AVGSalary)
ORDER BY Wally.AVGSalary asc
我得到了这个结果:
firstname lastname AVGSalary Direct Reports
Mike Patton 33666.500000 2
Kurt Corgan 37300.000000 2
Amber Bruckner 45851.666666 3
Doug Adams 86250.000000 2
Montgomery Scott 92500.000000 2
James Kirk 132666.750000 3
我被难住了。我需要它给我只有最小值的行,它给了我每一个值。我一直盯着这个,不知道我做错了什么。
我知道,从在线查看线程来看,使用 TOP 是一种过滤项目的方法,但尚未引入该方法,我希望保持在迄今为止课程中已建立的参数范围内。
任何对我所写内容的批评或任何帮助都会很棒。就像我说的,我是新手,只是想跟上。
谢谢,
J
【问题讨论】:
标签: sql sql-server subquery min having