MySQL高阶1783-大满贯数量

news/2024/9/19 9:11:32 标签: mysql, android, 数据库

题目

找出每一个球员赢得大满贯比赛的次数。结果不包含没有赢得比赛的球员的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');
Championships表

Players表

 分析数据

类型是行转列 一般要使用union(all)

 第一步:将几行转成一列,使用union all

select Wimbledon from Championships
union all
select Fr_open from Championships
union all
select US_open from Championships
union all
select Au_open from Championships;

第二步:将两张表进行关联

select player_id,player_name,count(*) as grand_slams_count
from players join
    (select Wimbledon from Championships
      union all
      select Fr_open from Championships
      union all
      select US_open from Championships
      union all
      select Au_open from Championships) t1
    on t1.Wimbledon = player_id
group by player_id, player_name;

总结

  • 若是行转列,使用union all
  • 若是列转行, 利用if函数将数据拉宽

http://www.niftyadmin.cn/n/5665314.html

相关文章

『 Linux 』HTTP(一)

文章目录 域名URLURLEncode和URLDecodeHTTP的请求HTTP的响应请求与响应的获取简单的Web服务器 域名 任何客户端在需要访问一个服务端时都需要一个IP和端口号,而当一个浏览器去访问一个网页时通常更多使用的是域名而不是IP:port的方式, www.baidu.com这是百度的域名; 实际上当浏…

Scikit-learn 学习笔记

安装: 在Scikit-learn中,数据通常表示为NumPy数组或Pandas DataFrame。特征数据(X)通常是一个二维数组,其中每一行代表一个样本,每一列代表一个特征。目标数据(y)通常是一个一维数组…

【编程底层原理】Java对象头的详细结构、锁机制及其优化技术,以及逃逸分析和JIT技术在性能优化中的作用

本文的内容主要涉及Java虚拟机(JVM)的内存管理、对象头的组成、锁机制和优化技术。 1. 对象头的组成 Mark Word:存储对象的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线…

Docker安装 ▎Docker详细讲解 ▎数据卷挂载 ▎Nginx安装理解

前言 Docker是一种容器化技术,简化软件的部署和管理。文章详细解释了Docker的架构、安装步骤和常用命令,帮助用户快速启动和管理容器。还介绍了Docker镜像命令和数据卷挂载的实例,增强对持久化存储的理解,并涵盖了Nginx的安装方法…

Imagen与其他生成模型的对比:DALL-E、Stable Diffusion、MidJourney

Imagen与其他生成模型的对比:DALL-E、Stable Diffusion、MidJourney 近年来,生成式人工智能(Generative AI)在艺术创作、文本生成、图像生成等领域取得了显著的进展。以生成图像为例,Imagen、DALL-E、Stable Diffusio…

ssh远程连接try1账号切换tips

1,创建拥有sudo权限的用户: 在root下 sudo adduser bio sudo vim /etc/sudoers //修改添加如下: bio ALL(ALL) ALL //bio用户就拥有了root权限参考:https://github.com/isLishude/blog/issues/70 2,修改ssh配置 …

【机器学习随笔】PCA降维与SVD

这块主要参考这个博文,写的很好:一文让你彻底搞懂主成成分分析PCA的原理及代码实现(超详细推导) 唯一的疑问是这份代码,自己跑出来的结果第二维数据的符号与原文符号正好相反。有朋友看到可以跑出来一起看下结果: import numpy as np from s…

软件卸载工具(windows系统)-geek

有时候软件卸载会很麻烦,使用geek会比较方便。但是针对一些特别大的软件,geek也好像会稍微费点劲(比如MATLAB2022A),不过针对一般常规软件的卸载,geek就可以有效地完全卸载了,使用方法也很简单,…