喜欢就 关注 我们吧!
简介:
Hello 各位 ,我是公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。
感谢微信给予的个人认证,专注于PHP、数据库技术领域知识经验分享。
技术的交流、不仅仅限制于阅读,因此我特地创建了一个「红包激励机制」的 sql 刷题群,红包激励机制内容,我将以图片形式放在文章底部(欧力给)。
前四篇已有 90+ 的伙伴在评论区打卡留言,参与红包激励制的 sql刷题学习。
题目一:
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代表你打卡次数);
机器人会统计打卡次数,每周公布一次打卡数据。
往下拉,红包机制内容
和我再战 n+1 天
同时,为了方便大家学习,我会把一些源码、技术干货存储到 github 中,随时可以在微信群 进行交流,扫下面二维码 ,备注 “技术进群” 就可以通过审核。
进群的小伙伴请加右侧私人微信(备注:技术进群)
----投稿分隔线----
投稿,关注公众号回复“投稿”,专员对接
-----商务合作分隔线----
商务合作,关注公众号回复“商务合作”,