力扣1355-活动参与者

表: Friends

复制代码
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| name          | varchar |
| activity      | varchar |
+---------------+---------+
id 是朋友的 id,并且在 SQL 中,是该表的主键
name 是朋友的名字
activity 是朋友参加的活动的名字

表: Activities

复制代码
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| name          | varchar |
+---------------+---------+
在 SQL 中,id 是该表的主键
name 是活动的名字

找出那些既没有最多,也没有最少参与者的活动的名字。

Activities 表中的任意活动都有在 Friends 中参与过。

可以以 任何顺序 返回结果。

下面是返回结果格式的例子。

示例 1:

复制代码
输入:
Friends 表:
+------+--------------+---------------+
| id   | name         | activity      |
+------+--------------+---------------+
| 1    | Jonathan D.  | Eating        |
| 2    | Jade W.      | Singing       |
| 3    | Victor J.    | Singing       |
| 4    | Elvis Q.     | Eating        |
| 5    | Daniel A.    | Eating        |
| 6    | Bob B.       | Horse Riding  |
+------+--------------+---------------+
Activities 表:
+------+--------------+
| id   | name         |
+------+--------------+
| 1    | Eating       |
| 2    | Singing      |
| 3    | Horse Riding |
+------+--------------+
输出:
+--------------+
| activity     |
+--------------+
| Singing      |
+--------------+
解释:
Eating 活动有三个人参加, 是最多人参加的活动 (Jonathan D. , Elvis Q. and Daniel A.)
Horse Riding 活动有一个人参加, 是最少人参加的活动 (Bob B.)
Singing 活动有两个人参加 (Victor J. and Jade W.)

思路:

1、因为题目要求,求出非最多和最少的活动的名字,可以使用max,min先找出最大和最小值,然后取反;

2,、用窗口函数dense_rank()排序,正序和倒序分别找去排名第一的,然后求 rn != 1。

代码1:

sql 复制代码
select activity
from (
    select
        activity,
        count(name) cnt,
        max(count(name)) over () max_cnt,
        min(count(name)) over () min_cnt
    from friends
    group by activity
) t
where cnt not in (max_cnt, min_cnt);

代码2:

sql 复制代码
select
    activity
from
(
    select
        activity,
        dense_rank() over(order by count(id) desc) rn1,
        dense_rank() over(order by count(id)) rn2
    from Friends
    group by activity
)
where rn1 != 1 and rn2 != 1
相关推荐
萧曵 丶20 小时前
MySQL三大日志系统浅谈
数据库·sql·mysql
煎蛋学姐20 小时前
SSM校园兼职招聘系统x6u36(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·企业管理·ssm 框架·校园兼职招聘系统
Morwit21 小时前
*【力扣hot100】 647. 回文子串
c++·算法·leetcode
ChineHe21 小时前
Redis基础篇004_Redis Pipeline流水线详解
数据库·redis·缓存
roman_日积跬步-终至千里21 小时前
【大数据架构-数据中台(1)】解码数据中台:从概念到认知
大数据·架构·dubbo
西柚补习生21 小时前
通用 PWM 原理基础教学
数据库·mongodb
追风的木木1 天前
TDengine在NetCore中数据查询的使用
大数据·tdengine
数据猿1 天前
【金猿CIO展】上海纽约大学信息技术部高级主任常潘:大数据铸基,AI赋能,从数字化校园向智慧有机体的十年跃迁
大数据·人工智能
菜鸟233号1 天前
力扣96 不同的二叉搜索树 java实现
java·数据结构·算法·leetcode