首页 > 数据库 >SQL,力扣题目1783,大满贯数量

SQL,力扣题目1783,大满贯数量

时间:2024-10-30 12:17:49浏览次数:3  
标签:int 1783 year 力扣 player Championships SQL open id

一、力扣链接

1783. 大满贯数量

二、题目描述

表:Players

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| player_id      | int     |
| player_name    | varchar |
+----------------+---------+
player_id 是这个表的主键(具有唯一值的列)
这个表的每一行给出一个网球运动员的 ID 和 姓名

表:Championships

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| year          | int     |
| Wimbledon     | int     |
| Fr_open       | int     |
| US_open       | int     |
| Au_open       | int     |
+---------------+---------+
year 是这个表的主键(具有唯一值的列)
该表的每一行都包含在每场大满贯网球比赛中赢得比赛的球员的 ID

编写解决方案,找出每一个球员赢得大满贯比赛的次数。结果不包含没有赢得比赛的球员的ID 。

结果集 无顺序要求 。

三、目标拆解

四、建表语句

Create table If Not Exists Players (player_id int, player_name varchar(20))
Create table If Not Exists Championships (year int, Wimbledon int, Fr_open int, US_open int, Au_open int)
Truncate table Players
insert into Players (player_id, player_name) values ('1', 'Nadal')
insert into Players (player_id, player_name) values ('2', 'Federer')
insert into Players (player_id, player_name) values ('3', 'Novak')
Truncate table Championships
insert into Championships (year, Wimbledon, Fr_open, US_open, Au_open) values ('2018', '1', '1', '1', '1')
insert into Championships (year, Wimbledon, Fr_open, US_open, Au_open) values ('2019', '1', '1', '2', '2')
insert into Championships (year, Wimbledon, Fr_open, US_open, Au_open) values ('2020', '2', '1', '2', '2')

五、过程分析

1、计算所有字段不同player_id的个数,选择union all 方法

2、根据新表进行分组聚合,子查询查找球员姓名

六、代码实现

with t1 as(
select year, Wimbledon player_id
from Championships
union all
select year, Fr_open
from Championships
union all 
select year, US_open
from Championships
union all
select year, Au_open
from Championships
)
select player_id,
       (select player_name from players p where p.player_id = t1.player_id) player_name,
       count(player_id) grand_slams_count
from t1 group by player_id;

七、结果验证

八、小结

1、union all 纵向拼接所有字段内容,用于后续整体对表格进行操作

2、select 后的子查询通过where 条件进行连接,返回单个值

3、聚合函数count() 用于计算个数

标签:int,1783,year,力扣,player,Championships,SQL,open,id
From: https://blog.csdn.net/m0_59659684/article/details/143357649

相关文章

  • SQL,力扣题目1747,应该被禁止的 Leetflex 账户
    一、力扣链接LeetCode_1747二、题目描述表: LogInfo+-------------+----------+|ColumnName|Type|+-------------+----------+|account_id|int||ip_address|int||login|datetime||logout|datetime|+-------------......
  • SQL,力扣题目1699,两人之间的通话次数
    一、力扣链接LeetCode_1699二、题目描述表: Calls+-------------+---------+|ColumnName|Type|+-------------+---------+|from_id|int||to_id|int||duration|int|+-------------+---------+该表没有主键(具有唯一值......
  • IDEA设置语法高亮自动检查xml中sql语法
    1、首先如果使用的是终极版直接去SQLDialects里面设置就行。详细信息2、如果是社区版就没有这个功能,但如果可以自己安装MybatisCodeHelperPro插件idea中点File->Settings->Plugins,输入MyBatisCodeHelperPro点击安装即可,一年的费用是十来块;另外网上到处有魄姐教程不细说,用于......
  • 为什么MySQL单表不能超过2000万行? (1)
    ​最近看到一篇《我说MySQL每张表最好不要超过2000万数据,面试官让我回去等通知》的文章,非常有趣。文中提到,他朋友在面试的过程中说,自己的工作就是把用户操作信息存到MySQL里,因为数据量超大(5000万条左右),需要每天定时生成3张表,然后将数据取模分别存到这三张表里。下面是两人的对......
  • MySQL的临时表空间
    InnoDB使用会话临时表空间和全局临时表空间。会话临时表空间会话临时表空间用于存储用户创建的临时表,以及在InnoDB被配置为磁盘上内部临时表的存储引擎时由优化器创建的内部临时表。从MySQL8.0.16开始,磁盘上内部临时表使用的存储引擎是InnoDB。(以前,存储引擎由internal_tmp_d......
  • windows下Mysql8.0.12安装详解
    MySQL的安装过程还是比较繁琐,为了以后安装节约时间,将其详细安装过程总结如下:1>下载对应版本下载地址:https://dev.mysql.com/downloads/mysql/2>将下载的.zip文件解压到需要安装的目录下,在该目录下创建一个名为data的空文件夹和一个my.ini文件3>配置初始化的my.ini文件......
  • 千万级数据深分页查询SQL性能优化实践
    作者:京东零售曹志飞一、系统介绍和问题描述如何在Mysql中实现上亿数据的遍历查询?先来介绍一下系统主角:关注系统,主要是维护京东用户和业务对象之前的关注关系;并对外提供各种关系查询,比如查询用户的关注商品或店铺列表,查询用户是否关注了某个商品或店铺等。但是最近接到了一个新......
  • GaussDB可维护性--支持SQL PATCH
    支持SQLPATCH可获得性本特性自503.1.0版本开始引入。特性简介SQLPATCH能够在避免直接修改用户业务语句的前提下对查询执行的方式做一定调整。在发现查询语句的执行计划、执行方式未达预期的场景下,可以通过创建查询补丁的方式,使用Hint对查询计划进行调优或对特定的语句......
  • SQL注入介绍
    初探SQL注入的分类、挖掘技巧以及防御的方法漏洞介绍(1)注入条件用户能控制输入且输入的内容被带到数据库去执行(2)注入原理对用户输入过滤不严谨。(3)注入本质违背了“数据与代码分离”的原则(4)可能存在注入的SQL语句地方select语句输入payload,最后加注释符即可。inse......
  • System.Data.SqlClient老版本引发内存溢出的问题
    有一个朋友和我说他负责的项目有内存溢出的情况,内存一直居高不下达到了8G。生产环境碰到内存溢出的情况我还没有碰到过,这次有机会实践一下,准备试试,拿到了dump文件,压缩包300M,解压出来3G。该事件是发生在2023年,写这篇文件的是已经是2024年了,为什么会间隔这么久才写这篇文章,因为当时......