1355. 活动参与者---inner join 或窗口函数

活动参与者
题目分析:题目要求出不是最多也不是最少人参加的活动,那咱们直接排除就好了。排除方法有两种,一种可以是使用limit 限制,然后取交集,即inner join。还有一种就可以使用dense_rank()
解法一

select F1.activity from (
select activity from Friends group by activity having count(*) != (select count(*) num from Friends group by activity order by num desc limit 1)) F1 inner join 

(select activity from Friends group by activity having count(*) != (select count(*) num from Friends group by activity order by num limit 1) ) F2 on F1.activity = F2.activity;

解法二

select f.activity from (
select activity,DENSE_RANK() over(ORDER BY count(activity) desc) d1_rank,DENSE_RANK() over(ORDER BY count(activity)) d2_rank from Friends group by activity ) f where d1_rank <> 1 and d2_rank <> 1;

提交结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值