力扣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
相关推荐
IT大白鼠2 分钟前
渗透测试实战从靶场搭建到渗透流程——第 8 篇 · 服务型靶标(上):MySQL 双版本写文件链
数据库·mysql·渗透测试
演艺大赏6 分钟前
Doris 2.1.11 BE 多节点异常掉线:AutoReleaseClosure callback reuse 数据竞争与 std::bad_alloc 双
大数据
海绵宝宝转agent13 分钟前
Leetcode二叉树算法个人理解
笔记·学习·算法·leetcode·深度优先
小蒋观天下14 分钟前
网络抖动、乱序、丢包:UDP/RTSP/TCP对AI抓拍、轨迹跟踪的不同影响
大数据·人工智能·深度学习
super_Omni26 分钟前
Chrome 插件入驻实战:从 Manifest V3 到过审上架的完整路径
大数据·前端·chrome
piaoyiren27 分钟前
Python FTP 服务端项目详细功能文档
网络·数据库·python
少年的范儿29 分钟前
Windows 安装 MySQL 8.4 教程(ZIP 解压版):配置 my.ini、初始化数据库与启动服务
数据库·windows·mysql
Rain的Java大神之路33 分钟前
面试被LeetCode 27(移除元素)问懵?别再用两层 for 循环了:一道“简单题”吃透双指针原地删除,附面试加分话术 + 11 个避坑清单
后端·leetcode·面试
悟天特斯34 分钟前
安防一体化:从“各管各的“到“全局联动“
java·大数据·网络·人工智能·物联网
l1t39 分钟前
DeepSeek总结的AI 智能体应该用哪种语言搜索其记忆:SQL 还是 SPARQL?
数据库·人工智能·sql