SQL查询相同个数

今天再写数据库题的时候遇到了一个题目是:
链接:https://leetcode-cn.com/problems/find-the-team-size

编写一个 SQL 查询,以求得每个员工所在团队的总人数。

表是:

+-------------+------------+
| employee_id | team_id    |
+-------------+------------+
|     1       |     8      |
|     2       |     8      |
|     3       |     8      |
|     4       |     7      |
|     5       |     9      |
|     6       |     9      |
+-------------+------------+

查询结果是:

+-------------+------------+
| employee_id | team_size  |
+-------------+------------+
|     1       |     3      |
|     2       |     3      |
|     3       |     3      |
|     4       |     1      |
|     5       |     2      |
|     6       |     2      |
+-------------+------------+

博主还是在本科的时候学的数据库,诗歌久远忘的已经差不多了,然后就写了以下的语句:

select employee_id , count(team_id)  team_size
from Employee
group by team_id;

看起来自我感觉良好,一运行,这是错的呀,运行结果如下:

{"headers": ["employee_id", "team_size"], "values": [[4, 1], [1, 3], [5, 2]]}

转化为表格就是:

+-------------+------------+
| employee_id | team_size  |
+-------------+------------+
|     4       |     1      |
|     1       |     3      |
|     5       |     2      |
+-------------+------------+

这使我陷入了沉思这样写出来的结果是不对的,原因推测如下,我们`

group by team_id

这样的话我们只能够得到和team_id的种类个数相等的记录数,即:我们只能得到3条记录,这楼主才明白,于是乎我们可以在以上的结果上再对原始的表进行一个连接,俩表是以team_id作为连接依据的,我们先对之前的SQL语句进行一下修改:

select team_id , count(*)  team_size
from Employee
group by team_id

得到了由team_idteam_size组成的表,然后我们再使用原始的表与改改我们得到的表进行一个左连接,语句如下:

select e.employee_id,s.team_size
from Employee e
left join
(
select team_id , count(*)  team_size
from Employee
group by team_id
)  s
on e.team_id=s.team_id;

就可以啦!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值