今天,我需要你的帮助。
我有一个统计网站,我从 Game Webservices 获取数据。我想实现一个新功能,但我不知道怎么做。
我想猜测玩家的连接时间。
我有一个脚本,它每小时收集一次数据并将这些数据存储在一个表中。想象一下,我有一张表,其中包含:player_id、分数和小时(整数,只是 H),以及月份的天数。
然后,例如,如果 17 小时和 18 小时之间的分数不同,则玩家已连接到他的帐户。
为简化起见,假设我有一张桌子,每天从 1 到 31,小时从 0 到 23。
在月底,我需要执行一个查询来计算每小时播放器在这一小时内连接的天数。
Example :
0 => 31 The player has been connected between 23 and 0 : every days
1 => 3 The player has been connected between 0 and 1 : 3 days a month
2 => 5 The player has been connected between 1 and 2 : 5 days a month
3 => 10 The player has been connected between 3 and 4 : 10 days a month
...
23 => 4
我想我可以从第 1 小时 0 到第 31 小时 23 点按天数和小时数以及 player_id 排序,并使用以下 CASE 进行第一次 SELECT:
SELECT
table.*,
(CASE WHEN ACTUAL_ROW.score!=PREVIOUS_ROW.score THEN 1 ELSE 0) AS active
FROM table
知道播放器是否已连接到每一行。然后每小时做一个 GROUP BY 和一个 SUM 很简单。但我不知道如何将前一行与实际进行比较
你有任何想法或提示如何做到这一点?PL/SQL 这样做更好吗?
注意:我正在使用 PostGreSQL
谢谢