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

avatar
作者
猴君
阅读量:0

目录

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函数得出),再对应原数据是否存在该日期,统计存在的个数,除以总人数。注意这道题求的是首日注册后第二天连续登录的,不是任意两天连续登录就行。

补充知识点:

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!