此表已按EMPLOYER-NAME,JOB_TITLE,WORKSITE_CITY,WORKSITE_STATE和IN_YEAR分组,计算为AVG_ANNUAL_SALARY。
我在下一个查询中想要做的是:
select EMPLOYER-NAME, JOB_TITLE, WORKSITE_CITY, WORKSITE_STATE,
AVG(AVG_ANNUAL_SALARY) AS ANNUAL_SALARY,
"Most recent year(could be 2015 or 2014 or 2013 or 2012)'s salary"
from table
group by EMPLOYER-NAME, JOB_TITLE, WORKSITE_CITY, WORKSITE_STATE
我是mysql的新手,有人可以帮我检索双引号中的部分吗? 谢谢!
答案 0 :(得分:0)
尝试此查询:
select t1.EMPLOYER-NAME, t1.JOB_TITLE, t1.WORKSITE_CITY, t1.WORKSITE_STATE,
AVG(t1.AVG_ANNUAL_SALARY) AS ANNUAL_SALARY, t2.AVG_ANNUAL_SALARY AS MOST_RECENT_SALARY
from table t1
group by EMPLOYER-NAME, JOB_TITLE, WORKSITE_CITY, WORKSITE_STATE
inner join
(
select EMPLOYER-NAME, JOB_TITLE, WORKSITE_CITY, WORKSITE_STATE, AVG_ANNUAL_SALARY
from table r1
where r1.IN_YEAR = (
select max(r2.IN_YEAR) from table r2
where r1.EMPLOYER-NAME = r2.EMPLOYER-NAME and r1.JOB_TITLE = r2.JOB_TITLE
and r1.WORKSITE_CITY = r2.WORKSITE_CITY
and r1.WORKSITE_STATE = r2.WORKSITE_STATE
)
) t2
ON t1.EMPLOYER-NAME = t2.EMPLOYER-NAME and t1.JOB_TITLE = t2.JOB_TITLE
and t1.WORKSITE_CITY = t2.WORKSITE_CITY and t1.WORKSITE_STATE = t2.WORKSITE_STATE
<强>解释强>
内部查询为每个组查找最近一年的平均年薪。然后,此临时表将通过EMPLOYER-NAME
,JOB-TITLE
,WORKSITE_CITY
和WORKSITE_STATE
的组合从原始查询中加入到表中。
注意:强>
通过假设默认情况下MySQL只返回GROUP BY
的第一行, 可能能够远离简化的查询。剂适量this SO post。但我会回避在制作中这样做,因为你永远不知道它可能不会被支持的时间和地点。