LeetCode力扣 精选数据库70题 (SQL自学记录)

目录

512. 游戏玩法分析 II

534. 游戏玩法分析 III

550. 游戏玩法分析 IV  重难点

569. 员工薪水中位数

578. 查询回答率最高的问题    重难点

579. 查询员工的累计薪水

584 ifnull的用法

585 2016的投资

597 好友申请总通过率

602 好友申请

607 销售员

614 二级关注者

617 平均工资:部门与公司比较

618 学生地理位置


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

题目

解答思路:可以用窗口函数;也可以用最小值函数min

## 最小函数
select player_id,min(event_date) as first_login
from Activity
group by player_id

## 最小值窗口函数
select distinct player_id,min(event_date) over(partition by player_id) as first_login
from Activity

512. 游戏玩法分析 II

题目

解答思路:一种是窗口函数方法;另一种是用()in()方法

## ()in()方法
select player_id,device_id
from Activity
where (player_id,event_date) in 
( select player_id,min(event_date) as event_date
from Activity 
group by player_id )

## 窗口函数
select player_id, device_id
from 
(select player_id, device_id, 
dense_rank() over(partition by player_id order by event_date asc) rk 
from activity) a
where a.rk=1

534. 游戏玩法分析 III

题目

解答思路:使用累加求和窗口函数sum()over()

补充知识点:窗口函数sum()over() 链接:Hive--开窗函数--窗口聚合函数:SUM、AVG、COUNT、MAX、MIN_韩家小志的博客-CSDN博客_窗口函数count

select player_id, event_date, 
sum(games_played) over(partition by player_id order by event_date) games_played_so_far 
from activity

550. 游戏玩法分析 IV  重难点

解答思路:先得到用户首次注册后次日登录的日期(用date_add函数得出),再对应原数据是否存在该日期,统计存在的个数,除以总人数。注意这道题求的是首日注册后第二天连续登录的,不是任意两天连续登录就行。

补充知识点:

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值