PostgreSQL 分离json数组来统计用户局数

是这样的,想请分析下,PostgreSQL 分离json数组来统计用户局数
最新回答
烟花巷陌ヾ

2024-11-28 05:52:55

需求:统计每天每个玩家在每个游戏上进行的局数。

牌局记录表结构:log_date(日期)、game_id(游戏ID)、points(json类型,包含玩家信息和得分)。

points为json数组,包含用户得分和user_id信息。需将其分离为多行。

分离后,利用窗口函数统计每个user_id对应的局数。

SQL语句:SELECT game_id, user_id, SUM(COUNT(*)) OVER(PARTITION BY game_id, user_id) AS round_count FROM(SELECT log_date, game_id, (json_array_elements(points::json) ->>'user_id') AS user_id FROM game_record) AS A GROUP BY game_id, user_id;

over字句使sum(count(*))作为窗口函数,在game_id和user_id相等的行集上进行计算,得出局数。

关注小宅,获取更多内容。

文章转载自华为云社区