猪脑过载学SQL

最近名流塔姆很火,大家有没有玩过

先来看一下数据

 

需求:

在所有队伍里面,找到小队成员都处于“待命”状态的小队编号

三种方法:

方法一:双重否定法

所有队伍成员都处于待命状态 == 没有一个队伍成员不是待命状态的

	select DISTINCT(team_id) 
	from Team T1
	where not exists (
	select * 
	from Team T2
	where T1.team_id = T2.team_id 
	and 
	T2.STATUS <> "待命")

方法二:标记法

对所有处于待命状态的成员打标签,根据小队分组,查看小队成员的个数和打标签个数的人是否相等.

	--方法二
	对所有成员打上标记
	select team_id from 
	(
	select *,case when status ="待命" then 1 else 0 end "状态"
	from Team) d 
	group by d.team_id 
	having MAX(状态) = 1 and MIN(状态) = 1 
	如果最大的状态是1  最小的状态也是1  说明什么,  状态都是1   
	1111    最大的是1   最小的也是1   都是1     都是待命的

方法三:求个数法

--方法三
	根据team_id 分组,如果待命的个数和成员的个数一样,那么就是全部待命
	select team_id
	from Team 
	group by team_id 
	having count(*) = sum(case when status ="待命" then 1 else 0 end )
	

今天的主要目的就来给大家分享一下平常不用的exists。

其实最近的文章里面,用到的案例基本上都是 sql进阶里面的教程。

需要这本书的pdf可以私信博主。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值