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

力扣-游戏玩法分析

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:511. 游戏玩法分析
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.正确示范④
      • 提交SQL
      • 运行结果
    • 5.其他
  • 总结


前言


一、题目:511. 游戏玩法分析

活动表 Activity:

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| player_id    | int     |
| device_id    | int     |
| event_date   | date    |
| games_played | int     |
+--------------+---------+
表的主键是 (player_id, event_date)。
这张表展示了一些游戏玩家在游戏平台上的行为活动。
每行数据记录了一名玩家在退出平台之前,当天使用同一台设备登录平台后打开的游戏的数目(可能是 0 个)。

写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期。

查询结果的格式如下所示:

Activity 表:
+-----------+-----------+------------+--------------+
| player_id | device_id | event_date | games_played |
+-----------+-----------+------------+--------------+
| 1         | 2         | 2016-03-01 | 5            |
| 1         | 2         | 2016-05-02 | 6            |
| 2         | 3         | 2017-06-25 | 1            |
| 3         | 1         | 2016-03-02 | 0            |
| 3         | 4         | 2018-07-03 | 5            |
+-----------+-----------+------------+--------------+Result 表:
+-----------+-------------+
| player_id | first_login |
+-----------+-------------+
| 1         | 2016-03-01  |
| 2         | 2017-06-25  |
| 3         | 2016-03-02  |
+-----------+-------------+

二、解题

1.正确示范①

提交SQL

select player_id,
min(event_date) first_login
from Activity
group by player_id;

运行结果

2.正确示范②

提交SQL

select player_id,event_date first_login
from(
select player_id,event_date,
row_number() over(partition by player_id order by event_date) col
from Activity
) u where col=1;

运行结果

3.正确示范③

提交SQL

select player_id,event_date first_login
from(
select player_id,event_date,
dense_rank() over(partition by player_id order by event_date) col
from Activity
) u where col=1;

运行结果

4.正确示范④

提交SQL

select player_id,event_date first_login
from(
select player_id,event_date,
rank() over(partition by player_id order by event_date) col
from Activity
) u where col=1;

运行结果

5.其他


总结

正确示范①思路:
通过聚合函数group by player_id,然后对event_date求min即可;
正确示范②思路:
通过row_number() over(partition by player_id order by event_date) 取排名1;
正确示范③思路:
通过dense_rank() over(partition by player_id order by event_date) 取排名1;
正确示范④思路:
通过rank() over(partition by player_id order by event_date) 取排名1;
题目有一个很关键的点,表的主键是 (player_id, event_date),如果没这句话,示范③和示范④就有可能存在多个排名1。

http://www.lryc.cn/news/19802.html

相关文章:

  • ZZNUOJ_用C语言编写程序实现1186 : 奖学金(结构体专题)(附完整源码)
  • 加油站ai系统视频监测 yolov5
  • 【JDK8新特性之Stream流-Stream结果收集案例实操】
  • Fiddler 抓包工具
  • 2023最新版网络安全保姆级指南,手把手带你从零基础进阶渗透攻防工程师
  • 排序基础之选择排序法
  • 2.24测试用例
  • 面试必刷101 Java题解 -- part 1
  • Python---关联与继承
  • 数据库行业的 “叛逆者”:大数据已“死”,MotherDuck 当立
  • Linux->进程优先级
  • loki 日志管理的安装部署使用
  • CTFer成长之路之反序列化漏洞
  • Python学习-----模块5.0(文件管理大师-->os模块)
  • 第45届世界技能大赛“网络安全”赛项浙江省选拔赛竞赛任务书
  • 【uniapp微信小程序】跨平台使用echarts的方案选择踩坑
  • WAF渗透攻防实践(16)
  • 高并发场景下机器性能优化sop
  • 【女程序员进大厂面试经验】
  • 计算机网络笔记(复试准备)第一章
  • WooCommerce 上传文件 Vanquish v71.6
  • zabbix4.0 Web页面配置 - 聚合图形的实现
  • 计算机网络 — UDP协议(看这一篇就可以
  • Pikachu靶场(暴力破解)
  • 浅谈script,link,import,@import引入
  • 【CSS】CSS 层叠样式表 ① ( 简介 | CSS 引入方式 - 内联样式 | 内联样式语法 | 内联样式缺点 )
  • 12.STM32系统定时器-SysTick
  • 28张图讲解支付系统的通用设计,漂亮!
  • 【5】linux命令每日分享——touch创建文件
  • TypeScript快速上手语法+结合vue3用法