「数据库」sql刷题(No.5)

喜欢就 关注 我们吧!

简介: 

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 中,随时可以在微信群 进行交流,扫下面二维码 ,备注 “技术进群” 就可以通过审核。

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

----投稿分隔线----

投稿,关注公众号回复“投稿”,专员对接

-----商务合作分隔线----

商务合作,关注公众号回复“商务合作”,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八点半的Bruce丶D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值