diff --git a/models/behavior_analysis.py b/models/behavior_analysis.py index 05a1563..e66dbed 100644 --- a/models/behavior_analysis.py +++ b/models/behavior_analysis.py @@ -839,6 +839,23 @@ addHours("#event_time", 8) >= '{stat_date}' AND addHours("#event_time", 8) <= '{ `#event_name` = 'create_account' and is_new_device = 1) b on a.`#distinct_id`= b.`#distinct_id` and a.date = b.date GROUP BY toDate(addHours("#event_time", 8))""" + # 排行榜前100名提取优化处理 + if event_name_display == '充值排行': + game = self.game + # 截取原始sql中动态条件部分 + aaa = r'WHERE(.*?)GROUP' + bbb = re.findall(aaa, str(sql)) + dt_where = bbb[0] + sql = f""" + SELECT toDate(addHours({game}.event."#event_time", 8)) AS date,{game}.event."#account_id", + round(sum(if({game}.event."#event_name" = 'pay', {game}.event."unitPrice", 0)) / 100,2) AS values + FROM {game}.event + WHERE {dt_where} and {game}.event.`#account_id` in ( + SELECT {game}.event."#account_id" + FROM {game}.event + WHERE {dt_where} GROUP BY {game}.event."#account_id" + ORDER BY round(sum(if({game}.event."#event_name" = 'pay', {game}.event."unitPrice", 0)) / 100,2) AS values desc LIMIT 100) + GROUP BY toDate(addHours({game}.event."#event_time", 8)),{game}.event."#account_id" ORDER BY date LIMIT 100000""" sqls.append({'sql': sql, 'group_label': self.group_label, 'groupby': [i.key for i in self.groupby],