当前位置: 首页 > news >正文

力扣SQL刷题11

目录标题

      • 1194. 锦标赛优胜者--做出来了
      • 1225. 报告系统状态的连续日期-勉强
      • 1159. 市场分析 II
      • 1205. 每月交易II

1194. 锦标赛优胜者–做出来了

题型:看题
解答:先处理matches表,整出分数列和players表连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意点: union all 时,会存在一个 player_id有多行记录,这样再和p表连接时,会变多,所以需要先group by聚合一下

with t as
(select player_id,sum(score) as score
from (select first_player player_id,first_score scorefrom Matchesunion allselect second_player player_id,second_score scorefrom Matches)agroup by player_id
)select distinct a.group_id,a.player_id
from
(select p.player_id,p.group_id,rank()over(partition by p.group_id order by ifnull(t.score,0) desc, p.player_id asc) as r
from Players p left join t on p.player_id=t.player_id) a
where r=1

窗口函数总结:
<窗口函数> over (partition by <分组列名> order by <排序列名>)

rank() : 阶梯排序-前两个是并列的1,接下来就是第3名
dense_rank(): 连续排序-前两个是并列的1,接下来就是第2名
row_number(): 不会出现重复的排序

1225. 报告系统状态的连续日期-勉强

题型:连续天数问题

在这里插入图片描述
在这里插入图片描述

select type as period_state, min(date) as start_date, max(date) as end_date
from
(select type, date, subdate(date,row_number()over(partition by type order by date)) as difffrom(select 'failed' as type, fail_date as date from Failedunion allselect 'succeeded' as type, success_date as date from Succeeded) a
)a
where date between '2019-01-01' and '2019-12-31'
group by type,diff
order by start_date

1159. 市场分析 II

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

select user_id as seller_id,
if(t.item_brand=u.favorite_brand,'yes','no') 2nd_item_fav_brand
from Users u
left join (select o.item_id, i.item_brand, seller_id,rank() over (partition by seller_id order by order_date) rk from orders o left join items i on o.item_id=i.item_id) t
on u.user_id=t.seller_id and rk=2

1205. 每月交易II

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

with cte as
(select * from transactionsunion allselect id, country, 'chargeback' state, amount, c.trans_datefrom chargebacks c left join transactions t on c.trans_id = t.id
) select date_format(trans_date, '%Y-%m') month, country,sum(state = 'approved') approved_count,sum(if(state = 'approved', amount, 0)) approved_amount,sum(state = 'chargeback') chargeback_count,sum(if(state = 'chargeback', amount, 0)) chargeback_amount
from cte 
group by month, country
having approved_amount or chargeback_amount
http://www.lryc.cn/news/5440.html

相关文章:

  • Fluent Python 笔记 第 9 章 符合 Python 风格的对象
  • 档案管理数字化,成功的领导者,往往只问这3个问题
  • 自学软件测试从哪里开始?给还在迷茫的人一条出路
  • 配置MyBatis Plus 的分页查询功能
  • Solon2 开发之插件,四、插件热插拔管理机制(H-Spi)
  • 从react源码看hooks的原理
  • 空间尺寸对迭代次数的影响
  • mininet+flowvisor+floodlight实现网络切片功能
  • 【C++】十分钟带你入门C++
  • kettle利用excel文件增量同步一个库的数据(多表一次增量同步)
  • 面试题:android中A Activity 打开B Activity,为什么A Activity的onStop()方法最后被调用
  • 百度版本gactgpt即将来临,gpt人工智能机器横空出世
  • 【python--networkx】函数说明+代码讲解
  • 【Jqgrid分页勾选保存】三步实现表格分页勾选(取消勾选)保存(附源码)
  • Appium移动自动化测试——app控件获取之uiautomatorviewer
  • webpack、vite、vue-cli、create-vue 的区别
  • 数据结构——TreeMap、TreeSet与HashMap、HashSet
  • Spring Boot学习篇(十三)
  • 微软Bing的AI人工只能对话体验名额申请教程
  • 怎么打造WhatsApp Team?SaleSmartly(ss客服)告诉你
  • IPV4地址的原理和配置
  • 软件测试面试准备——(一)Selenium(1)基础问题及自动化测试
  • AcWing 1230.K倍区间
  • kubernetes集群部署springcloud项目【AL】【未写完】
  • 各种音频接口比较
  • 软件测试面试理论(超详细)
  • c++学习笔记-二进制文件操作(哔站-黑马程序员c++教学视频)
  • 内网渗透(二十三)之Windows协议认证和密码抓取-Mimikatz介绍和各种模块使用方法
  • Nginx if的使用教程
  • 备考蓝桥杯【快速排序和归并排序】