首页 > 其他分享 >力扣练习1355.活动参与者

力扣练习1355.活动参与者

时间:2024-10-26 11:47:19浏览次数:3  
标签:insert name into 1355 力扣 activity Friends id 参与者

1355.活动参与者

一、题目链接

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 表:

idnameactivity
1Jonathan D.Eating
2Jade W.Singing
3Victor J.Singing
4Elvis Q.Eating
5Daniel A.Eating
6Bob B.Horse Riding

Activities 表:

idname
1Eating
2Singing
3Horse Riding

输出:

activity
Singing

解释:
Eating 活动有三个人参加, 是最多人参加的活动 (Jonathan D. , Elvis Q. and Daniel A.)
Horse Riding 活动有一个人参加, 是最少人参加的活动 (Bob B.)
Singing 活动有两个人参加 (Victor J. and Jade W.)

三、建表语句

Create table If Not Exists Friends (id int, name varchar(30), activity varchar(30));
Create table If Not Exists Activities (id int, name varchar(30));
Truncate table Friends;
insert into Friends (id, name, activity) values ('1', 'Jonathan D.', 'Eating');
insert into Friends (id, name, activity) values ('2', 'Jade W.', 'Singing');
insert into Friends (id, name, activity) values ('3', 'Victor J.', 'Singing');
insert into Friends (id, name, activity) values ('4', 'Elvis Q.', 'Eating');
insert into Friends (id, name, activity) values ('5', 'Daniel A.', 'Eating');
insert into Friends (id, name, activity) values ('6', 'Bob B.', 'Horse Riding');
Truncate table Activities;
insert into Activities (id, name) values ('1', 'Eating');
insert into Activities (id, name) values ('2', 'Singing');
insert into Activities (id, name) values ('3', 'Horse Riding');

四、题目解答

1、思路1讲解

先使用CTE表达式,将活动名和参加该活动的人数作为临时子表,因为主查询和where子查询都要用到经过处理的包含count(*)的表,所以使用cte表达式简化代码。
CTE临时表结果如下

activitytn
Eating3
Singing2
Horse Riding1

然后在主查询中使用where子查询
筛选出等于最多人数和最小人数的活动最后输出

2、代码1实现

with t1 as (select activity,count(*)  as tn from Friends group by activity)

select
 activity
from t1
where tn<>(select max(tn) from t1) and tn <>(select min(tn) as tn from t1);

3、思路2讲解

使用having加any配合子查询,any()函数的意思是,只要左边的值与右边中的值有任意一个匹配就输出
然后本体中使用只要having count大于any子查询中的count和小于any子查询中的count排除掉最大值和最小值就可以了

4、代码2实现

select
    activity
from Friends
group by activity
having count(*)>any(select count(*) from Friends)
    and count(*)<any(select count(*) from Friends)

五、知识总结

①CTE表达式的运用

    with 	表1别名  as ( 子查询1), 
    表2别名 as (子查询2),
    .......
    select
    ........(主查询)
    from  

②any函数的运用

	any()就代表任意的意思,只要等于任意其中之一就输出

标签:insert,name,into,1355,力扣,activity,Friends,id,参与者
From: https://blog.csdn.net/m0_45220893/article/details/143251351

相关文章

  • 力扣练习1264.页面推荐
    1264.页面推荐一、题目链接二、题目描述三、建表语句四、题目解答1、思路讲解2、代码实现五、知识总结一、题目链接1264.页面推荐(需要会员)二、题目描述朋友关系列表:Friendship±--------------±--------+|ColumnName|Type|±--------------±--------+......
  • 力扣 简单 111.二叉树的最小深度
    文章目录题目介绍题解题目介绍题解最小深度:从根节点到最近叶子结点的最短路径上节点数量。分三种情况讨论即可:当前节点为空,则返回当前节点minDepth=0;当前节点左右子树都存在,则返回当前节点minDepth=左右子树最小深度的最小值+1;当前节点的左右子树其中一个不存......
  • 力扣 简单 70.爬楼梯
    文章目录题目介绍题解题目介绍题解思路分析:确定dp数组以及下标的含义:dp[i]:爬到第i层楼梯,有dp[i]种方法确定递推公式:从dp[i]的定义可以看出,dp[i]可以有两个方向推出来。首先是dp[i-1],上i-1层楼梯,有dp[i-1]种方法,那么再一步跳一个台阶不就是dp[i]了么。还有......
  • SQL实战训练之,力扣:1709. 访问日期之间最大的空档期
    目录        一、力扣原题链接        二、题目描述        三、建表语句        四、题目分析                五、SQL解答        六、最终答案        七、验证        八、知识点一、......
  • 二叉树习题其三-Java【力扣】【算法学习day.10】
    前言书接上篇文章二叉树习题其二,这篇文章我们将基础拓展###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!习题1.从中序与后序遍历序......
  • 轮转数组——力扣189题
    力扣189题轮转数组,本身很简单,但是反复提交很多次都没有成功,实在是让人难以启齿,分析应该还是概念不清晰导致的,自以为理解得很清楚,实际确实模棱两可。把数组后几个移动到前面的位置上去,按照我最开始的想法,不过就是切片,把后半部分切下来,形成的两个半个数组再加起来不就是了吗?在py......
  • 哈哈哈!力扣80题击败100%
    实在没想到能击败100%,忍不住嘚瑟一下:这道题是leetcode第26题的姐妹篇,也是删除有序数组中的重复元素,但是重复元素需要保留两个。增加的这个小小要求可是不容易搞。按照第26题的思路,不外乎双指针,设置一个起始指针(简称后指针)作为参照元素的索引号,以另外一个指针(简称前指针)控制......
  • 力扣608.树节点练习
    力扣608.树节点一、题目总结如果你代码出错,可能是以下问题1、notin使用出现问题:notin后面接select子查询的结果中不能出现空值,需要像我这样whereidnotin(selectifnull(p_id,‘ad’)asidfromTreetr2),使用ifnull将空值转化为其他值,才能正常进行判断,但是如......
  • 137,[复杂递归+时间日期]SQL训练之,力扣,1384. 按年度列出销售总额
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,原题力扣链接二,题干三,建表语句四,分析五,SQL解答六,验证七,知识点总结一,原题力扣链接.-力扣(LeetCode)二,题干Product 表:+---------------+---------+|ColumnName|Type|+------------......
  • 【leetcode】 码住—两种办法解决力扣数学思想 “加一” 操作
     前言......