MySQL高阶1783-大满贯数量

题目

找出每一个球员赢得大满贯比赛的次数。结果不包含没有赢得比赛的球员的ID 。

结果集 无顺序要求

准备数据

python 复制代码
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

sql 复制代码
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;

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

sql 复制代码
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;

总结

相关推荐
努力学习的小廉36 分钟前
深入了解linux系统—— 操作系统的路径缓冲与链接机制
android·linux·服务器
大数据张老师37 分钟前
对比Redis与向量数据库(如Milvus)在AI中的应用
数据库·redis·milvus
清霜之辰1 小时前
安卓开发用到的设计模式(2)结构型模式
android·设计模式·结构型设计模式
sg_knight1 小时前
Flutter跨平台通信实战|3步打通Android原生能力,实现底层API调用!
android·前端·javascript·flutter·跨平台·web·双向通信
白嫖不白嫖1 小时前
MySQL 8.0 和 5.7 快速生成测试数据
android·数据库·mysql
CAT_cwds1 小时前
使用MybatisPlus实现sql日志打印优化
数据库·python·sql
YUNYINGXIA2 小时前
Python操作MySQL数据库
数据库·oracle
java1234_小锋2 小时前
一周学会Pandas2 Python数据处理与分析-Pandas2数据合并与对比-pd.merge():数据库风格合并
数据库·python·pandas
每次的天空3 小时前
Android-OkHttp与Retrofit学习总结
android·okhttp·retrofit
影子24013 小时前
sqlserver数据库查询执行慢的sql、查询隔离级别、设置快照模式、查询锁表进程、锁表sql、解锁等
数据库·sql·sqlserver