首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Leetcode 550游戏分析IV我的windows函数解决方案卡在最后一步

Leetcode 550游戏分析IV我的windows函数解决方案卡在最后一步
EN

Stack Overflow用户
提问于 2020-08-11 02:19:43
回答 1查看 176关注 0票数 0

我正在尝试解决这个Leetcode数据库问题#550 -游戏分析IV。给出问题的url,任何人都可以访问,而不必登录到leetcode:

代码语言:javascript
运行
复制
https://code.dennyzhang.com/game-play-analysis-iv

我尝试使用窗口函数来解决这个问题,这与上面链接的解决方案中给出的方法不同。

我在PostgreSQL中的查询:

代码语言:javascript
运行
复制
select count(distinct player_id) from
(select player_id, 
lag(event_date,1) over (partition by player_id order by event_date) as prev,
event_date,
lead(event_date,1) over (partition by player_id order by event_date) as next
from activity) t
where t.event_date - t.prev = 1 or t.next - t.event_date = 1

我的查询正确地给出了满足要求的玩家数量。然而,我面临着将结果表示为在场不同玩家总数的一小部分的挑战。

任何指导都会有很大帮助。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-06-16 10:59:21

您可以使用公用表表达式来获取查询的输出,并使用它来计算分数,如下所示:

代码语言:javascript
运行
复制
;with cte as (
  select count(distinct player_id) as cnt 
  from
  ( select player_id, 
    lag(event_date,1) over (partition by player_id order by event_date) as prev,
    event_date,
    lead(event_date,1) over (partition by player_id order by event_date) as next
    from activity
   ) t
  where t.event_date - t.prev = 1 or t.next - t.event_date = 1
)
select round(cte.cnt/count( distinct activity.player_id),2) as "fraction" 
from activity, cte
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63345873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档