力扣570(MySQL)-至少有5名直接下属的经理(简单)
题目:
Employee 表包含所有员工和他们的经理。每个员工都有一个 Id,并且还有一列是经理的 Id。
给定 Employee 表,请编写一个SQL查询来查找至少有5名直接下属的经理。对于上表,您的SQL查询应该返回:
注意:
没有人是自己的下属。
解题思路:
方法一:
使用子查询,先按经理id分组,过滤掉少于5个人的数据得到临时表,再用原表进行连接,取出姓名。
①子查询
1 select managerId
2 from employee
3 group by managerId
4 having count(*) >= 5;
②连接查询,取出姓名。
1 select name
2 from employee e1
3 join (select managerId
4 from employee
5 group by managerId
6 having count(*) >= 5
7 ) e2
8 on e1.id = e2.managerId;
方法二:自连接
①先将表自连接
1 select *
2 from employee e1
3 join employee e2
4 on e1.id = e2.managerId
②将查询出来的表进行筛选,以e1表中的name进行分组,并且分组后要数量多于5条的name。
1 select e1.name
2 from employee e1
3 join employee e2
4 on e1.id = e2.managerId
5 group by e1.name
6 having count(*) >= 5;
注意:
where 和 having 的区别:如果想在分组后再次进行条件筛选,使用having关键字
1.WHERE在分组前使用, HAVING在分组后使用;
2.运算顺序:WHERE 优先于 HAVING;
3.作用对象不同:WHERE只作用于表,而HAVING作用于GROUP BY子句的分组结果,如果不存在GROUP BY子句,则作用于WHERE子句的搜索结果,如果where子句也没有,则作用于表;
4.计算对象不同:HAVING用于组的计算,WHERE计算指定字段的每条记录;
通俗的话:凡是表里没有这个字段的时候(自造的字段)就必须用HAVING,否则建议使用WHERE,它的性能更优。
力扣570(MySQL)-至少有5名直接下属的经理(简单)的更多相关文章
- 力扣---511. 游戏玩法分析 I
活动表 Activity: +--------------+---------+| Column Name | Type |+--------------+---------+| player ...
- LeetCode 1244. 力扣排行榜
地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一 ...
- 刷题-力扣-LCP 07. 传递信息
LCP 07. 传递信息 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/chuan-di-xin-xi 著作权归领扣网络所有.商业转 ...
- 【力扣】649. Dota2 参议院
Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过程的投 ...
- 力扣---1148. 文章浏览 I
Views 表:+---------------+---------+| Column Name | Type |+---------------+---------+| article_i ...
- 力扣算法题—069x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- 设置Linux中的Mysql不区分表名大小写
1. MySQL数据库的表名在Linux系统下是严格区分大小写的,在Windows系统下开发的程序移植到Linux系统下,如果程序中SQL语句没有严格按照大小写访问数据库表,就可能会出现找不到表的错误 ...
- MySQL服务器修改主机名后问题解决
1.单机MySQL主机名修改 今天无事看到自己的主机名不对,于是改了一下,以便区分服务器,那只重启MySQL时出现下面错误: MySQL manager or server PID file coul ...
- MySQL获取Schema表名和字段信息
MySQL获取Schema表名和字段信息 获取表名 select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,TABLE_COMMENT,CREATE_TIME,U ...
- mysql查询所有表名
mysql使用sql查询表名的两种方法: 1.show tables; 2.SELECT TABLE_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WH ...
随机推荐
- tag 转 分支 branch
获得最新 git fetch origin 获取tag git tag tag 转 branch git branch newbranch vtest.1.0.FINAL --- git branch ...
- 使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示
前言 在.NET应用开发中数据集的交互式显示是一个非常常见的功能,如需要创建折线图.柱状图.饼图.散点图等不同类型的图表将数据呈现出来,帮助人们更好地理解数据.发现规律,并支持决策和沟通.本文我们将一 ...
- Mysql查询数据量大小
--按实例 SELECT CONCAT(round(sum(DATA_LENGTH/1024/1024/1024),2),"GB") as datazise FROM inform ...
- stars-one的原创工具——文档生成器
Github 可以快速生成静态页面文档的工具,适用于文档翻译或者是个人项目,个人开发者可以快速将生成的静态页面部署在gitee或者github上 优点 规范 使用流行的markdown格式编写文档 美 ...
- 使用Wireshark在RTP流中提取中264数据(针对udp)(转)
调试rtsp收发流时,经常会需要抓包以确认是网络问题还是程序问题还是其它问题.通过tcpdump或者wireshark抓到的包通常是rtp流,保存为.pcap格式文件后中,可通过wireshark进行 ...
- python读取文本多行合并一行
# 需要合并的行数 col = 4 # 创建新文件 nf = open("*.txt", "w+") # 读取初始文件 with open("*.tx ...
- PAT 甲级【1013 Battle Over Cities】
本题就是dfs.连通图个数-2: 但是java慢,最后一个case 超时 import java.io.*; import java.util.HashSet; import java.util.Se ...
- 记录--HTML问题:如何实现分享URL预览?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 需求分析 为了提高用户对页面链接分享的体验,需要对分享链接做一些处理. 以 Telegram(国外某一通讯软件) 为例,当在 Tel ...
- 记录--vue中动态引入图片为什么要是require, 你不知道的那些事
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 相信用过vue的小伙伴,肯定被面试官问过这样一个问题:在vue中动态的引入图片为什么要使用require 有些小伙伴,可能会轻蔑一笑:呵, ...
- Jmeter教程-JMeter 环境安装及配置
JMeter 环境安装及配置 在使用 JMeter 之前,需要配置相应的环境,包括安装JDK和JMeter. 首先,了解一下JDK,它就是Java的开发工具包. JMeter 是使用 Java 编写的 ...