简介:

感谢微信给予的个人认证,专注于PHP、数据库技术领域知识经验分享。

题目一:

user 表包含所有员工信息,每个员工有其对应的 id , salary 和 company_id。 例如下图:

company 表包含公司所有部门的信息。 例如下图:

编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,王五 在 销售部门有最高工资,二麻子 在 技术部门有最高工资。

解答方法:

这里给大家提供 1 种解答方式 ,非常骚操作~~~(以下解答方式,已经过测试)

第一种: 使用 Join 和 in 的方式 因为 user 表包含 salary 和 company_id 字段,我们可以以此在部门内查询最高工资。

SELECT
    company.name AS 'company',
    user.name AS 'user',
    salary
FROM
    user
        JOIN
    company ON user.company_id = company.id
WHERE
    (`user`.company_id , salary) IN
    (   SELECT
            company_id, MAX(salary)
        FROM
            `user`
        GROUP BY company_id
  )

注意:有可能有多个员工同时拥有最高工资,所以最好在这个查询中不包含雇员名字的信息。

然后,我们可以把表 user 和 company 连接,再在这张临时表里用 IN 语句查询部门名字和工资的关系。

结尾总结:

这 1 道题类型评定:中等类型 。主要就是利用 JOIN 与 IN 方式去搜索找到.

大家肯定会想,IN 还有如此骚操作,还可以这么用~快去试试吧~

恭喜你、打卡成功一天,记得留言区评论:打卡+ x 天(x代表你打卡次数); 机器人会统计打卡次数,每周公布一次打卡数据。

同时,为了方便大家学习,我会把一些源码、技术干货存储到 github 中,随时可以在微信群 进行交流,扫下面二维码 ,备注 “技术进群” 就可以通过审核。

进群的小伙伴请加右侧私人微信(备注:技术进群)