|  | @@ -14,6 +14,7 @@ import com.zanxiang.module.util.exception.BaseException;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  |  import org.apache.commons.collections4.CollectionUtils;
 | 
	
		
			
				|  |  |  import org.apache.commons.collections4.MapUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.ArrayUtils;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.nutz.dao.Cnd;
 | 
	
		
			
				|  |  |  import org.nutz.dao.Dao;
 | 
	
	
		
			
				|  | @@ -202,6 +203,7 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |      public Page<PitcherDataDayVO> getPitcherDataDay(PitcherDataDayDTO dto) {
 | 
	
		
			
				|  |  |          com.github.sd4324530.jtuple.Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo(dto.getSourceSystem());
 | 
	
		
			
				|  |  |          List<Long> userIds = CollectionUtils.isEmpty(dto.getPitcherId()) ? poerInfo.first : dto.getPitcherId();
 | 
	
		
			
				|  |  | +//        List<Long> userIds = CollectionUtils.isEmpty(dto.getPitcherId()) ? null : dto.getPitcherId();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //不传递时间,默认查询当天
 | 
	
		
			
				|  |  |          if (dto.getBeginDate() == null || dto.getEndDate() == null) {
 | 
	
	
		
			
				|  | @@ -252,16 +254,130 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          dao.execute(sql);
 | 
	
		
			
				|  |  |          //设置总记录数
 | 
	
		
			
				|  |  |          pager.setRecordCount(dao.count(clazz, cri));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //查询用户id
 | 
	
		
			
				|  |  | +        Map<String, String> map = findUsersIdForGameData(dto);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          //处理dayN数据
 | 
	
		
			
				|  |  |          List<PitcherDataDayVO> tempList = sql.getList(PitcherDataDayVO.class);
 | 
	
		
			
				|  |  | +        //取出用户ids,制作响应vo
 | 
	
		
			
				|  |  |          List<PitcherDataDayVO> list = tempList.stream().map(vo -> {
 | 
	
		
			
				|  |  | +            Long[] usersID = ArrayUtils.EMPTY_LONG_OBJECT_ARRAY;
 | 
	
		
			
				|  |  | +            //将pitcherId和需要查询的注册时间拼接
 | 
	
		
			
				|  |  | +            String pitcherIdDate = vo.getPitcherId() + "/" + dto.getBeginDate();
 | 
	
		
			
				|  |  | +            //取出所有usersId
 | 
	
		
			
				|  |  | +            if (map.containsKey(pitcherIdDate)) {
 | 
	
		
			
				|  |  | +                //string[] -> Long[]
 | 
	
		
			
				|  |  | +                usersID = Arrays.stream(map.get(pitcherIdDate)
 | 
	
		
			
				|  |  | +                                .split("/"))
 | 
	
		
			
				|  |  | +                        .map(Long::parseLong)
 | 
	
		
			
				|  |  | +                        .toArray(Long[]::new);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              formatPitcherDataDayDayN(vo);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            FirstNewUserAgainTrendVO againTrendVO = FirstNewUserAgainTrendVO.builder()
 | 
	
		
			
				|  |  | +                    .gameDimension(dto.getGameDimension())
 | 
	
		
			
				|  |  | +                    .sourceSystem(dto.getSourceSystem())
 | 
	
		
			
				|  |  | +                    .timeType("da1")
 | 
	
		
			
				|  |  | +                    .rechargeCount(vo.getAmountD1Trend().getRechargeUserCount())
 | 
	
		
			
				|  |  | +                    .usersId(usersID)
 | 
	
		
			
				|  |  | +                    .build();
 | 
	
		
			
				|  |  | +            vo.setUserDetails(againTrendVO);
 | 
	
		
			
				|  |  |              return vo;
 | 
	
		
			
				|  |  |          }).collect(Collectors.toList());
 | 
	
		
			
				|  |  |          //返回结果
 | 
	
		
			
				|  |  |          return new Page<>(list, pager);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 查询出注册当天且充值的所有用户id-投手每日
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param dto 前端查询参数
 | 
	
		
			
				|  |  | +     * @return map
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private Map findUsersIdForGameData(PitcherDataDayDTO dto) {
 | 
	
		
			
				|  |  | +        //不选投手查询的结果 --> (投手id/日期, userId)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //默认查询子游戏维度
 | 
	
		
			
				|  |  | +        if (dto.getGameDimension() == null) {
 | 
	
		
			
				|  |  | +            dto.setGameDimension(1L);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //默认查询字段
 | 
	
		
			
				|  |  | +        String gameColumn = "pitcher_id";
 | 
	
		
			
				|  |  | +        if (dto.getGameDimension() == 2L) {
 | 
	
		
			
				|  |  | +            gameColumn = "pitcher_id";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //查询每个游戏的注册首日充值用户id,在玩家充值排行榜里查找
 | 
	
		
			
				|  |  | +        Criteria findUsersCri = Cnd.cri();
 | 
	
		
			
				|  |  | +        //拼接游戏ID
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(dto.getPitcherId())) {
 | 
	
		
			
				|  |  | +            findUsersCri.where().andInList(gameColumn, dto.getPitcherId());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //拼接SDK来源
 | 
	
		
			
				|  |  | +        if (StringUtils.isNotBlank(dto.getSourceSystem())) {
 | 
	
		
			
				|  |  | +            findUsersCri.where().andEquals("source_system", dto.getSourceSystem());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //拼接查询时间
 | 
	
		
			
				|  |  | +        if (dto.getBeginDate() != null && dto.getEndDate() != null) {
 | 
	
		
			
				|  |  | +            findUsersCri.where().andBetween("DATE(reg_user_time)", dto.getBeginDate(), dto.getEndDate());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        findUsersCri.where().andNotEquals("reg_agent_id", 0);
 | 
	
		
			
				|  |  | +        Sql findUsersIdSql;
 | 
	
		
			
				|  |  | +        Criteria groupByCri = Cnd.cri();
 | 
	
		
			
				|  |  | +        groupByCri.getGroupBy().groupBy("pitcher_id", "DATE(reg_user_time)");
 | 
	
		
			
				|  |  | +        findUsersIdSql = Sqls.create(findUsersIdSql(findUsersCri, groupByCri));
 | 
	
		
			
				|  |  | +        //自定义回传
 | 
	
		
			
				|  |  | +        findUsersIdSql.setCallback((connection, resultSet, sql) -> {
 | 
	
		
			
				|  |  | +            Map<String, String> tempMap = new HashMap<>();
 | 
	
		
			
				|  |  | +            while (resultSet.next()) {
 | 
	
		
			
				|  |  | +                tempMap.put(resultSet.getString(1), resultSet.getString(2));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return tempMap;
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        //运行sql
 | 
	
		
			
				|  |  | +        dao.execute(findUsersIdSql);
 | 
	
		
			
				|  |  | +        //返回结果
 | 
	
		
			
				|  |  | +        return findUsersIdSql.getObject(Map.class);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 找出每个游戏注册时间内的注册当天且充值的用户id-投手每日-子游戏维度 (不选投手)
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @return String
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private String findUsersIdSql(Criteria cri, Criteria groupByCri) {
 | 
	
		
			
				|  |  | +        return """
 | 
	
		
			
				|  |  | +                SELECT
 | 
	
		
			
				|  |  | +                    CONCAT(pitcher_id,'/',DATE(reg_user_time)) as game_id_date,
 | 
	
		
			
				|  |  | +                    GROUP_CONCAT(CONVERT (player_id, varchar), "/") as amount_users_id
 | 
	
		
			
				|  |  | +                FROM
 | 
	
		
			
				|  |  | +                    game_ads.ads_player_recharge_ranking
 | 
	
		
			
				|  |  | +                """ + cri +
 | 
	
		
			
				|  |  | +                """
 | 
	
		
			
				|  |  | +                            and dt = DATE(reg_user_time) 
 | 
	
		
			
				|  |  | +                        """ + groupByCri;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 找出每个游戏注册时间内的注册当天且充值的用户id-投手每日-子游戏维度(选投手)
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @return String
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private String findUsersIdSqlPitcher(Criteria cri, Criteria groupByCri) {
 | 
	
		
			
				|  |  | +        return """
 | 
	
		
			
				|  |  | +                SELECT
 | 
	
		
			
				|  |  | +                    DATE(reg_user_time) as reg_user_time,
 | 
	
		
			
				|  |  | +                    GROUP_CONCAT(CONVERT (player_id, varchar), "/") as amount_users_id
 | 
	
		
			
				|  |  | +                FROM
 | 
	
		
			
				|  |  | +                    game_ads.ads_player_recharge_ranking
 | 
	
		
			
				|  |  | +                """ + cri +
 | 
	
		
			
				|  |  | +                """
 | 
	
		
			
				|  |  | +                            and dt = DATE(reg_user_time) 
 | 
	
		
			
				|  |  | +                        """ + groupByCri;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 投手每日数据总计
 | 
	
		
			
				|  |  |       *
 | 
	
	
		
			
				|  | @@ -272,7 +388,7 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |      public PitcherDataDayTotalVO getPitcherDataDayTotal(PitcherDataDayTotalDTO dto) {
 | 
	
		
			
				|  |  |          com.github.sd4324530.jtuple.Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo(dto.getSourceSystem());
 | 
	
		
			
				|  |  |          List<Long> userIds = CollectionUtils.isEmpty(dto.getPitcherId()) ? poerInfo.first : dto.getPitcherId();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +//        List<Long> userIds = CollectionUtils.isEmpty(dto.getPitcherId()) ? null : dto.getPitcherId();
 | 
	
		
			
				|  |  |          //不传递时间,默认查询当天
 | 
	
		
			
				|  |  |          if (dto.getBeginDate() == null || dto.getEndDate() == null) {
 | 
	
		
			
				|  |  |              dto.setBeginDate(LocalDate.now());
 | 
	
	
		
			
				|  | @@ -305,11 +421,34 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          //执行sql
 | 
	
		
			
				|  |  |          dao.execute(sql);
 | 
	
		
			
				|  |  |          PitcherDataDayTotalVO vo = sql.getObject(PitcherDataDayTotalVO.class);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        PitcherDataDayDTO pitcherDataDayDTO = new PitcherDataDayDTO();
 | 
	
		
			
				|  |  | +        BeanUtils.copyProperties(dto, pitcherDataDayDTO);
 | 
	
		
			
				|  |  | +        //查询用户id
 | 
	
		
			
				|  |  | +        Map<String, String> map = findUsersIdForGameData(pitcherDataDayDTO);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Long[] ids = ArrayUtils.EMPTY_LONG_OBJECT_ARRAY;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String idStr = map.values().stream().filter(string -> !string.isEmpty()).collect(Collectors.joining("/"));
 | 
	
		
			
				|  |  | +        if (StringUtils.isNotBlank(idStr)) {
 | 
	
		
			
				|  |  | +            ids = Arrays.stream(idStr.split("/")).map(Long::parseLong).toArray(Long[]::new);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if (StringUtils.isNotBlank(vo.getAmountD1())) {
 | 
	
		
			
				|  |  |              //处理dayN数据
 | 
	
		
			
				|  |  |              formatPitcherDataDayTotalDayN(vo);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            FirstNewUserAgainTrendVO againTrendVO = FirstNewUserAgainTrendVO.builder()
 | 
	
		
			
				|  |  | +                    .gameDimension(dto.getGameDimension())
 | 
	
		
			
				|  |  | +                    .sourceSystem(dto.getSourceSystem())
 | 
	
		
			
				|  |  | +                    .timeType("da1")
 | 
	
		
			
				|  |  | +                    .rechargeCount(vo.getAmountD1Trend().getRechargeUserCount())
 | 
	
		
			
				|  |  | +                    .usersId(ids)
 | 
	
		
			
				|  |  | +                    .build();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            vo.setUserDetails(againTrendVO);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          return vo;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -323,7 +462,7 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |      public Page<PitcherDataTotalVO> getPitcherDataTotal(PitcherDataTotalDTO dto) {
 | 
	
		
			
				|  |  |          com.github.sd4324530.jtuple.Tuple2<List<Long>, List<Long>> poerInfo = dataPowerComponent.getPowerInfo(dto.getSourceSystem());
 | 
	
		
			
				|  |  |          List<Long> userIds = CollectionUtils.isEmpty(dto.getPitcherId()) ? poerInfo.first : dto.getPitcherId();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +//        List<Long> userIds = CollectionUtils.isEmpty(dto.getPitcherId()) ? null : dto.getPitcherId();
 | 
	
		
			
				|  |  |          //如果注册时间参数为空,默认设置查询当天数据
 | 
	
		
			
				|  |  |          if (dto.getBeginDate() == null || dto.getEndDate() == null) {
 | 
	
		
			
				|  |  |              dto.setBeginDate(LocalDate.now());
 | 
	
	
		
			
				|  | @@ -607,16 +746,16 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          //设置总记录数
 | 
	
		
			
				|  |  |          Sql sqlCount = Sqls.create(
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                    	COUNT(1)
 | 
	
		
			
				|  |  | -                    FROM (
 | 
	
		
			
				|  |  | -                    	SELECT
 | 
	
		
			
				|  |  | -                    		COUNT(*)
 | 
	
		
			
				|  |  | -                    	FROM game_ads.ads_game_pitcher_day
 | 
	
		
			
				|  |  | -                """ + cri +
 | 
	
		
			
				|  |  | -                """
 | 
	
		
			
				|  |  | -                    ) a
 | 
	
		
			
				|  |  | -                """);
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                            	COUNT(1)
 | 
	
		
			
				|  |  | +                            FROM (
 | 
	
		
			
				|  |  | +                            	SELECT
 | 
	
		
			
				|  |  | +                            		COUNT(*)
 | 
	
		
			
				|  |  | +                            	FROM game_ads.ads_game_pitcher_day
 | 
	
		
			
				|  |  | +                        """ + cri +
 | 
	
		
			
				|  |  | +                        """
 | 
	
		
			
				|  |  | +                                    ) a
 | 
	
		
			
				|  |  | +                                """);
 | 
	
		
			
				|  |  |          sqlCount.setCallback(Sqls.callback.integer());
 | 
	
		
			
				|  |  |          dao.execute(sqlCount);
 | 
	
		
			
				|  |  |          pager.setRecordCount(sqlCount.getInt());
 | 
	
	
		
			
				|  | @@ -698,16 +837,16 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          //设置总记录数
 | 
	
		
			
				|  |  |          Sql sqlCount = Sqls.create(
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                    	COUNT(1)
 | 
	
		
			
				|  |  | -                    FROM (
 | 
	
		
			
				|  |  | -                    	SELECT
 | 
	
		
			
				|  |  | -                    		COUNT(*)
 | 
	
		
			
				|  |  | -                    	FROM game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | -                """ + cri +
 | 
	
		
			
				|  |  | -                """
 | 
	
		
			
				|  |  | -                    ) a
 | 
	
		
			
				|  |  | -                """);
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                            	COUNT(1)
 | 
	
		
			
				|  |  | +                            FROM (
 | 
	
		
			
				|  |  | +                            	SELECT
 | 
	
		
			
				|  |  | +                            		COUNT(*)
 | 
	
		
			
				|  |  | +                            	FROM game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | +                        """ + cri +
 | 
	
		
			
				|  |  | +                        """
 | 
	
		
			
				|  |  | +                                    ) a
 | 
	
		
			
				|  |  | +                                """);
 | 
	
		
			
				|  |  |          sqlCount.setCallback(Sqls.callback.integer());
 | 
	
		
			
				|  |  |          dao.execute(sqlCount);
 | 
	
		
			
				|  |  |          pager.setRecordCount(sqlCount.getInt());
 | 
	
	
		
			
				|  | @@ -1029,14 +1168,14 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          //账面人数数据
 | 
	
		
			
				|  |  |          Sql sqlAmountNum = Sqls.create(
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    IFNULL(COUNT(DISTINCT user_id), 0) amount_num
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criAmount +
 | 
	
		
			
				|  |  | -                """
 | 
	
		
			
				|  |  | -                AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                """);
 | 
	
		
			
				|  |  | +                        SELECT
 | 
	
		
			
				|  |  | +                            IFNULL(COUNT(DISTINCT user_id), 0) amount_num
 | 
	
		
			
				|  |  | +                        FROM
 | 
	
		
			
				|  |  | +                            game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criAmount +
 | 
	
		
			
				|  |  | +                        """
 | 
	
		
			
				|  |  | +                                AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                                """);
 | 
	
		
			
				|  |  |          //设置回传对象
 | 
	
		
			
				|  |  |          sqlAmountNum.setCallback(Sqls.callback.longValue());
 | 
	
		
			
				|  |  |          //执行sql
 | 
	
	
		
			
				|  | @@ -1050,14 +1189,14 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          //新用户充值人数
 | 
	
		
			
				|  |  |          Sql sqlNewUserNum = Sqls.create(
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    COUNT(DISTINCT user_id) new_user_amount_num
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criNewUser +
 | 
	
		
			
				|  |  | -                """
 | 
	
		
			
				|  |  | -                AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                """);
 | 
	
		
			
				|  |  | +                        SELECT
 | 
	
		
			
				|  |  | +                            COUNT(DISTINCT user_id) new_user_amount_num
 | 
	
		
			
				|  |  | +                        FROM
 | 
	
		
			
				|  |  | +                            game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criNewUser +
 | 
	
		
			
				|  |  | +                        """
 | 
	
		
			
				|  |  | +                                AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                                """);
 | 
	
		
			
				|  |  |          //设置回传对象
 | 
	
		
			
				|  |  |          sqlNewUserNum.setCallback(Sqls.callback.longValue());
 | 
	
		
			
				|  |  |          //执行sql
 | 
	
	
		
			
				|  | @@ -1068,20 +1207,20 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          //新用户复充人数
 | 
	
		
			
				|  |  |          Sql sqlNewUserAgainNum = Sqls.create(
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    COUNT(tempA.num) as new_user_order_again
 | 
	
		
			
				|  |  | -                FROM (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        COUNT(user_id) num
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criNewUser +
 | 
	
		
			
				|  |  | -                """
 | 
	
		
			
				|  |  | -                    AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                    GROUP BY user_id
 | 
	
		
			
				|  |  | -                    HAVING
 | 
	
		
			
				|  |  | -                        COUNT(user_id) > 1 ) tempA
 | 
	
		
			
				|  |  | -                """);
 | 
	
		
			
				|  |  | +                        SELECT
 | 
	
		
			
				|  |  | +                            COUNT(tempA.num) as new_user_order_again
 | 
	
		
			
				|  |  | +                        FROM (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                COUNT(user_id) num
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criNewUser +
 | 
	
		
			
				|  |  | +                        """
 | 
	
		
			
				|  |  | +                                    AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                                    GROUP BY user_id
 | 
	
		
			
				|  |  | +                                    HAVING
 | 
	
		
			
				|  |  | +                                        COUNT(user_id) > 1 ) tempA
 | 
	
		
			
				|  |  | +                                """);
 | 
	
		
			
				|  |  |          //设置回传对象
 | 
	
		
			
				|  |  |          sqlNewUserAgainNum.setCallback(Sqls.callback.longValue());
 | 
	
		
			
				|  |  |          //执行sql
 | 
	
	
		
			
				|  | @@ -1092,14 +1231,14 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          //创角人数
 | 
	
		
			
				|  |  |          Sql sqlRoleNum = Sqls.create(
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    COUNT(DISTINCT role_user_id) as role_num
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    dw_create_role_detail
 | 
	
		
			
				|  |  | -                """ + criRoleNum +
 | 
	
		
			
				|  |  | -                """
 | 
	
		
			
				|  |  | -                AND NOT user_agent_id = 0
 | 
	
		
			
				|  |  | -                """);
 | 
	
		
			
				|  |  | +                        SELECT
 | 
	
		
			
				|  |  | +                            COUNT(DISTINCT role_user_id) as role_num
 | 
	
		
			
				|  |  | +                        FROM
 | 
	
		
			
				|  |  | +                            dw_create_role_detail
 | 
	
		
			
				|  |  | +                        """ + criRoleNum +
 | 
	
		
			
				|  |  | +                        """
 | 
	
		
			
				|  |  | +                                AND NOT user_agent_id = 0
 | 
	
		
			
				|  |  | +                                """);
 | 
	
		
			
				|  |  |          //设置回传对象
 | 
	
		
			
				|  |  |          sqlRoleNum.setCallback(Sqls.callback.longValue());
 | 
	
		
			
				|  |  |          //执行sql
 | 
	
	
		
			
				|  | @@ -1590,26 +1729,26 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          Sql dayNSql;
 | 
	
		
			
				|  |  |          if (dto.getGameDimension() == 1L) {
 | 
	
		
			
				|  |  |              dayNSql = Sqls.create("""
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    dt,
 | 
	
		
			
				|  |  | -                    game_id,
 | 
	
		
			
				|  |  | -                    pitcher_id,
 | 
	
		
			
				|  |  | -                    source_system,
 | 
	
		
			
				|  |  | -                    dayN
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads.ads_pitcher_game_dayn
 | 
	
		
			
				|  |  | -                """ + cri);
 | 
	
		
			
				|  |  | +                    SELECT
 | 
	
		
			
				|  |  | +                        dt,
 | 
	
		
			
				|  |  | +                        game_id,
 | 
	
		
			
				|  |  | +                        pitcher_id,
 | 
	
		
			
				|  |  | +                        source_system,
 | 
	
		
			
				|  |  | +                        dayN
 | 
	
		
			
				|  |  | +                    FROM
 | 
	
		
			
				|  |  | +                        game_ads.ads_pitcher_game_dayn
 | 
	
		
			
				|  |  | +                    """ + cri);
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              dayNSql = Sqls.create("""
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    dt,
 | 
	
		
			
				|  |  | -                    parent_game_id as game_id,
 | 
	
		
			
				|  |  | -                    pitcher_id,
 | 
	
		
			
				|  |  | -                    source_system,
 | 
	
		
			
				|  |  | -                    dayN
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads_parent.ads_pitcher_game_dayn_parent
 | 
	
		
			
				|  |  | -                """ + cri);
 | 
	
		
			
				|  |  | +                    SELECT
 | 
	
		
			
				|  |  | +                        dt,
 | 
	
		
			
				|  |  | +                        parent_game_id as game_id,
 | 
	
		
			
				|  |  | +                        pitcher_id,
 | 
	
		
			
				|  |  | +                        source_system,
 | 
	
		
			
				|  |  | +                        dayN
 | 
	
		
			
				|  |  | +                    FROM
 | 
	
		
			
				|  |  | +                        game_ads_parent.ads_pitcher_game_dayn_parent
 | 
	
		
			
				|  |  | +                    """ + cri);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //设置回传
 | 
	
	
		
			
				|  | @@ -1731,26 +1870,26 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |          Sql dayNSql;
 | 
	
		
			
				|  |  |          if (dto.getGameDimension() == 1L) {
 | 
	
		
			
				|  |  |              dayNSql = Sqls.create("""
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    dt,
 | 
	
		
			
				|  |  | -                    game_id,
 | 
	
		
			
				|  |  | -                    pitcher_id,
 | 
	
		
			
				|  |  | -                    source_system,
 | 
	
		
			
				|  |  | -                    dayN
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads.ads_pitcher_game_dayn
 | 
	
		
			
				|  |  | -                """ + cri);
 | 
	
		
			
				|  |  | +                    SELECT
 | 
	
		
			
				|  |  | +                        dt,
 | 
	
		
			
				|  |  | +                        game_id,
 | 
	
		
			
				|  |  | +                        pitcher_id,
 | 
	
		
			
				|  |  | +                        source_system,
 | 
	
		
			
				|  |  | +                        dayN
 | 
	
		
			
				|  |  | +                    FROM
 | 
	
		
			
				|  |  | +                        game_ads.ads_pitcher_game_dayn
 | 
	
		
			
				|  |  | +                    """ + cri);
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              dayNSql = Sqls.create("""
 | 
	
		
			
				|  |  | -                SELECT
 | 
	
		
			
				|  |  | -                    dt,
 | 
	
		
			
				|  |  | -                    parent_game_id as game_id,
 | 
	
		
			
				|  |  | -                    pitcher_id,
 | 
	
		
			
				|  |  | -                    source_system,
 | 
	
		
			
				|  |  | -                    dayN
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads_parent.ads_pitcher_game_dayn_parent
 | 
	
		
			
				|  |  | -                """ + cri);
 | 
	
		
			
				|  |  | +                    SELECT
 | 
	
		
			
				|  |  | +                        dt,
 | 
	
		
			
				|  |  | +                        parent_game_id as game_id,
 | 
	
		
			
				|  |  | +                        pitcher_id,
 | 
	
		
			
				|  |  | +                        source_system,
 | 
	
		
			
				|  |  | +                        dayN
 | 
	
		
			
				|  |  | +                    FROM
 | 
	
		
			
				|  |  | +                        game_ads_parent.ads_pitcher_game_dayn_parent
 | 
	
		
			
				|  |  | +                    """ + cri);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //设置回传
 | 
	
	
		
			
				|  | @@ -2541,9 +2680,9 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                      ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total,
 | 
	
		
			
				|  |  |                  """ + getPitcherGameDataDayTotalDayNsql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads.ads_game_pitcher_day
 | 
	
		
			
				|  |  | -                """;
 | 
	
		
			
				|  |  | +                        FROM
 | 
	
		
			
				|  |  | +                            game_ads.ads_game_pitcher_day
 | 
	
		
			
				|  |  | +                        """;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -2649,9 +2788,9 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                      ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total,
 | 
	
		
			
				|  |  |                  """ + getPitcherGameDataDayTotalDayNsql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                FROM
 | 
	
		
			
				|  |  | -                    game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | -                """;
 | 
	
		
			
				|  |  | +                        FROM
 | 
	
		
			
				|  |  | +                            game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | +                        """;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -2753,8 +2892,8 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                      ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total,
 | 
	
		
			
				|  |  |                  """ + getPitcherGameDataDayTotalDayNsql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                FROM 
 | 
	
		
			
				|  |  | -                """ + tableName;
 | 
	
		
			
				|  |  | +                        FROM 
 | 
	
		
			
				|  |  | +                        """ + tableName;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -2856,8 +2995,8 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                      ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total,
 | 
	
		
			
				|  |  |                  """ + getPitcherGameDataDayTotalDayNsql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                FROM 
 | 
	
		
			
				|  |  | -                """ + tableName;
 | 
	
		
			
				|  |  | +                        FROM 
 | 
	
		
			
				|  |  | +                        """ + tableName;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -3135,87 +3274,87 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                      	ROUND(IF(SUM(hundred_user_num) > 0 , SUM(cost) / SUM(hundred_user_num), 0), 2) as hundred_user_num_cost,
 | 
	
		
			
				|  |  |                  """ + pitcherDataTotalRoiSql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                            SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                            SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                            SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                            SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads_parent.ads_pitcher_day_parent
 | 
	
		
			
				|  |  | -                """ + criA +
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                    SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                    SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                    SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                    SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads_parent.ads_pitcher_day_parent
 | 
	
		
			
				|  |  | +                        """ + criA +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                ) a
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        pitcher_id as b_pitcher_id,
 | 
	
		
			
				|  |  | -                        IFNULL(SUM(amount), 0) as amount,
 | 
	
		
			
				|  |  | -                        IFNULL(SUM(amount_count), 0) as amount_count,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(amount_count) > 0 , SUM(amount) / SUM(amount_count), 0), 2) as paper_avg
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads_parent.ads_pitcher_day_parent
 | 
	
		
			
				|  |  | -                """ + criB +
 | 
	
		
			
				|  |  | +                        ) a
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                pitcher_id as b_pitcher_id,
 | 
	
		
			
				|  |  | +                                IFNULL(SUM(amount), 0) as amount,
 | 
	
		
			
				|  |  | +                                IFNULL(SUM(amount_count), 0) as amount_count,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(amount_count) > 0 , SUM(amount) / SUM(amount_count), 0), 2) as paper_avg
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads_parent.ads_pitcher_day_parent
 | 
	
		
			
				|  |  | +                        """ + criB +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                ) b ON a.pitcher_id = b.b_pitcher_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        pitcher_id as c_pitcher_id,
 | 
	
		
			
				|  |  | -                        IFNULL(COUNT(DISTINCT user_id), 0) amount_num
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criAmount +
 | 
	
		
			
				|  |  | +                        ) b ON a.pitcher_id = b.b_pitcher_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                pitcher_id as c_pitcher_id,
 | 
	
		
			
				|  |  | +                                IFNULL(COUNT(DISTINCT user_id), 0) amount_num
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criAmount +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                        AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                    GROUP BY pitcher_id
 | 
	
		
			
				|  |  | -                ) c ON a.pitcher_id = c.c_pitcher_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        pitcher_id as d_pitcher_id,
 | 
	
		
			
				|  |  | -                        COUNT(DISTINCT user_id) new_user_amount_num
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criNewUser +
 | 
	
		
			
				|  |  | +                                AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                            GROUP BY pitcher_id
 | 
	
		
			
				|  |  | +                        ) c ON a.pitcher_id = c.c_pitcher_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                pitcher_id as d_pitcher_id,
 | 
	
		
			
				|  |  | +                                COUNT(DISTINCT user_id) new_user_amount_num
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criNewUser +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                        AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                    GROUP BY
 | 
	
		
			
				|  |  | -                        pitcher_id
 | 
	
		
			
				|  |  | -                ) d ON a.pitcher_id = d.d_pitcher_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        pitcher_id as e_pitcher_id,
 | 
	
		
			
				|  |  | -                        COUNT(tempA.num) as new_user_order_again
 | 
	
		
			
				|  |  | -                    FROM (
 | 
	
		
			
				|  |  | -                        SELECT
 | 
	
		
			
				|  |  | -                            pitcher_id,
 | 
	
		
			
				|  |  | -                            COUNT(user_id) num
 | 
	
		
			
				|  |  | -                        FROM
 | 
	
		
			
				|  |  | -                            game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criNewUser +
 | 
	
		
			
				|  |  | +                                AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                            GROUP BY
 | 
	
		
			
				|  |  | +                                pitcher_id
 | 
	
		
			
				|  |  | +                        ) d ON a.pitcher_id = d.d_pitcher_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                pitcher_id as e_pitcher_id,
 | 
	
		
			
				|  |  | +                                COUNT(tempA.num) as new_user_order_again
 | 
	
		
			
				|  |  | +                            FROM (
 | 
	
		
			
				|  |  | +                                SELECT
 | 
	
		
			
				|  |  | +                                    pitcher_id,
 | 
	
		
			
				|  |  | +                                    COUNT(user_id) num
 | 
	
		
			
				|  |  | +                                FROM
 | 
	
		
			
				|  |  | +                                    game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criNewUser +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                            AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                        GROUP BY
 | 
	
		
			
				|  |  | -                            user_id,
 | 
	
		
			
				|  |  | -                            pitcher_id
 | 
	
		
			
				|  |  | -                        HAVING
 | 
	
		
			
				|  |  | -                            COUNT(user_id) > 1 ) tempA
 | 
	
		
			
				|  |  | -                    GROUP BY
 | 
	
		
			
				|  |  | -                        tempA.pitcher_id
 | 
	
		
			
				|  |  | -                ) e ON a.pitcher_id = e.e_pitcher_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        user_zx_pitcher_id as f_pitcher_id,
 | 
	
		
			
				|  |  | -                        COUNT(DISTINCT role_user_id) as role_num
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        dw_create_role_detail
 | 
	
		
			
				|  |  | -                """ + criRoleNum +
 | 
	
		
			
				|  |  | +                                    AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                                GROUP BY
 | 
	
		
			
				|  |  | +                                    user_id,
 | 
	
		
			
				|  |  | +                                    pitcher_id
 | 
	
		
			
				|  |  | +                                HAVING
 | 
	
		
			
				|  |  | +                                    COUNT(user_id) > 1 ) tempA
 | 
	
		
			
				|  |  | +                            GROUP BY
 | 
	
		
			
				|  |  | +                                tempA.pitcher_id
 | 
	
		
			
				|  |  | +                        ) e ON a.pitcher_id = e.e_pitcher_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                user_zx_pitcher_id as f_pitcher_id,
 | 
	
		
			
				|  |  | +                                COUNT(DISTINCT role_user_id) as role_num
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                dw_create_role_detail
 | 
	
		
			
				|  |  | +                        """ + criRoleNum +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                        AND NOT user_agent_id = 0
 | 
	
		
			
				|  |  | -                    GROUP BY user_zx_pitcher_id
 | 
	
		
			
				|  |  | -                ) f ON a.pitcher_id = f.f_pitcher_id
 | 
	
		
			
				|  |  | -                """;
 | 
	
		
			
				|  |  | +                                AND NOT user_agent_id = 0
 | 
	
		
			
				|  |  | +                            GROUP BY user_zx_pitcher_id
 | 
	
		
			
				|  |  | +                        ) f ON a.pitcher_id = f.f_pitcher_id
 | 
	
		
			
				|  |  | +                        """;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -3483,93 +3622,93 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                  		ROUND(IF(SUM(hundred_user_num) > 0 , SUM(cost) / SUM(hundred_user_num), 0), 2) as hundred_user_num_cost,
 | 
	
		
			
				|  |  |                  """ + pitcherDataTotalRoiSql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                              SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                              SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                              SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                              SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | -                """ + criA +
 | 
	
		
			
				|  |  | -                """
 | 
	
		
			
				|  |  | -                ) a
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        pitcher_id as b_pitcher_id,
 | 
	
		
			
				|  |  | -                        parent_game_id as b_game_id,
 | 
	
		
			
				|  |  | -                        IFNULL(SUM(amount), 0) as amount,
 | 
	
		
			
				|  |  | -                        IFNULL(SUM(amount_count), 0) as amount_count,
 | 
	
		
			
				|  |  | -                        ROUND(IF(SUM(amount_count) > 0 , SUM(amount) / SUM(amount_count), 0), 2) as paper_avg
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | -                """ + criB +
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                      SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                      SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                      SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                      SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | +                        """ + criA +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                ) b ON a.pitcher_id = b.b_pitcher_id AND a.game_id = b.b_game_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        pitcher_id as c_pitcher_id,
 | 
	
		
			
				|  |  | -                        parent_game_id as c_game_id,
 | 
	
		
			
				|  |  | -                        IFNULL(COUNT(DISTINCT user_id), 0) amount_num
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criAmount +
 | 
	
		
			
				|  |  | +                        ) a
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                pitcher_id as b_pitcher_id,
 | 
	
		
			
				|  |  | +                                parent_game_id as b_game_id,
 | 
	
		
			
				|  |  | +                                IFNULL(SUM(amount), 0) as amount,
 | 
	
		
			
				|  |  | +                                IFNULL(SUM(amount_count), 0) as amount_count,
 | 
	
		
			
				|  |  | +                                ROUND(IF(SUM(amount_count) > 0 , SUM(amount) / SUM(amount_count), 0), 2) as paper_avg
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads_parent.ads_game_pitcher_day_parent
 | 
	
		
			
				|  |  | +                        """ + criB +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                        AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                    GROUP BY pitcher_id , parent_game_id
 | 
	
		
			
				|  |  | -                ) c ON a.pitcher_id = c.c_pitcher_id AND a.game_id = c.c_game_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        pitcher_id as d_pitcher_id,
 | 
	
		
			
				|  |  | -                        parent_game_id as d_game_id,
 | 
	
		
			
				|  |  | -                        COUNT(DISTINCT user_id) new_user_amount_num
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criNewUser +
 | 
	
		
			
				|  |  | +                        ) b ON a.pitcher_id = b.b_pitcher_id AND a.game_id = b.b_game_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                pitcher_id as c_pitcher_id,
 | 
	
		
			
				|  |  | +                                parent_game_id as c_game_id,
 | 
	
		
			
				|  |  | +                                IFNULL(COUNT(DISTINCT user_id), 0) amount_num
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criAmount +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                    AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                    GROUP BY
 | 
	
		
			
				|  |  | -                        pitcher_id , parent_game_id
 | 
	
		
			
				|  |  | -                ) d ON a.pitcher_id = d.d_pitcher_id AND a.game_id = d.d_game_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        parent_game_id as e_game_id,
 | 
	
		
			
				|  |  | -                        pitcher_id as e_pitcher_id,
 | 
	
		
			
				|  |  | -                        COUNT(tempA.num) as new_user_order_again
 | 
	
		
			
				|  |  | -                    FROM (
 | 
	
		
			
				|  |  | -                        SELECT
 | 
	
		
			
				|  |  | -                            parent_game_id,
 | 
	
		
			
				|  |  | -                            pitcher_id,
 | 
	
		
			
				|  |  | -                            COUNT(user_id) num
 | 
	
		
			
				|  |  | -                        FROM
 | 
	
		
			
				|  |  | -                            game_ads.ads_information
 | 
	
		
			
				|  |  | -                """ + criNewUser +
 | 
	
		
			
				|  |  | +                                AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                            GROUP BY pitcher_id , parent_game_id
 | 
	
		
			
				|  |  | +                        ) c ON a.pitcher_id = c.c_pitcher_id AND a.game_id = c.c_game_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                pitcher_id as d_pitcher_id,
 | 
	
		
			
				|  |  | +                                parent_game_id as d_game_id,
 | 
	
		
			
				|  |  | +                                COUNT(DISTINCT user_id) new_user_amount_num
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criNewUser +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  |                              AND NOT agent_id = 0
 | 
	
		
			
				|  |  | -                        GROUP BY
 | 
	
		
			
				|  |  | -                            user_id,
 | 
	
		
			
				|  |  | -                            pitcher_id,
 | 
	
		
			
				|  |  | -                            parent_game_id
 | 
	
		
			
				|  |  | -                        HAVING
 | 
	
		
			
				|  |  | -                            COUNT(user_id) > 1 ) tempA
 | 
	
		
			
				|  |  | -                    GROUP BY tempA.parent_game_id, tempA.pitcher_id
 | 
	
		
			
				|  |  | -                ) e ON a.game_id = e.e_game_id AND a.pitcher_id = e.e_pitcher_id
 | 
	
		
			
				|  |  | -                LEFT JOIN (
 | 
	
		
			
				|  |  | -                    SELECT
 | 
	
		
			
				|  |  | -                        parent_game_id as f_game_id,
 | 
	
		
			
				|  |  | -                        user_zx_pitcher_id as f_pitcher_id,
 | 
	
		
			
				|  |  | -                        COUNT(DISTINCT role_user_id) as role_num
 | 
	
		
			
				|  |  | -                    FROM
 | 
	
		
			
				|  |  | -                        dw_create_role_detail
 | 
	
		
			
				|  |  | -                """ + criRoleNum +
 | 
	
		
			
				|  |  | +                            GROUP BY
 | 
	
		
			
				|  |  | +                                pitcher_id , parent_game_id
 | 
	
		
			
				|  |  | +                        ) d ON a.pitcher_id = d.d_pitcher_id AND a.game_id = d.d_game_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                parent_game_id as e_game_id,
 | 
	
		
			
				|  |  | +                                pitcher_id as e_pitcher_id,
 | 
	
		
			
				|  |  | +                                COUNT(tempA.num) as new_user_order_again
 | 
	
		
			
				|  |  | +                            FROM (
 | 
	
		
			
				|  |  | +                                SELECT
 | 
	
		
			
				|  |  | +                                    parent_game_id,
 | 
	
		
			
				|  |  | +                                    pitcher_id,
 | 
	
		
			
				|  |  | +                                    COUNT(user_id) num
 | 
	
		
			
				|  |  | +                                FROM
 | 
	
		
			
				|  |  | +                                    game_ads.ads_information
 | 
	
		
			
				|  |  | +                        """ + criNewUser +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                        AND NOT user_agent_id = 0
 | 
	
		
			
				|  |  | -                    GROUP BY parent_game_id, user_zx_pitcher_id
 | 
	
		
			
				|  |  | -                ) f ON a.game_id = f.f_game_id AND a.pitcher_id = f.f_pitcher_id
 | 
	
		
			
				|  |  | -                """;
 | 
	
		
			
				|  |  | +                                    AND NOT agent_id = 0
 | 
	
		
			
				|  |  | +                                GROUP BY
 | 
	
		
			
				|  |  | +                                    user_id,
 | 
	
		
			
				|  |  | +                                    pitcher_id,
 | 
	
		
			
				|  |  | +                                    parent_game_id
 | 
	
		
			
				|  |  | +                                HAVING
 | 
	
		
			
				|  |  | +                                    COUNT(user_id) > 1 ) tempA
 | 
	
		
			
				|  |  | +                            GROUP BY tempA.parent_game_id, tempA.pitcher_id
 | 
	
		
			
				|  |  | +                        ) e ON a.game_id = e.e_game_id AND a.pitcher_id = e.e_pitcher_id
 | 
	
		
			
				|  |  | +                        LEFT JOIN (
 | 
	
		
			
				|  |  | +                            SELECT
 | 
	
		
			
				|  |  | +                                parent_game_id as f_game_id,
 | 
	
		
			
				|  |  | +                                user_zx_pitcher_id as f_pitcher_id,
 | 
	
		
			
				|  |  | +                                COUNT(DISTINCT role_user_id) as role_num
 | 
	
		
			
				|  |  | +                            FROM
 | 
	
		
			
				|  |  | +                                dw_create_role_detail
 | 
	
		
			
				|  |  | +                        """ + criRoleNum +
 | 
	
		
			
				|  |  | +                """
 | 
	
		
			
				|  |  | +                                AND NOT user_agent_id = 0
 | 
	
		
			
				|  |  | +                            GROUP BY parent_game_id, user_zx_pitcher_id
 | 
	
		
			
				|  |  | +                        ) f ON a.game_id = f.f_game_id AND a.pitcher_id = f.f_pitcher_id
 | 
	
		
			
				|  |  | +                        """;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -3623,17 +3762,17 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                      ROUND(IF(SUM(hundred_user_num) > 0 , SUM(cost) / SUM(hundred_user_num), 0), 2) as hundred_user_num_cost,
 | 
	
		
			
				|  |  |                  """ + pitcherDataTotalRoiSql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | -                FROM 
 | 
	
		
			
				|  |  | -                """ + tableName;
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | +                        FROM 
 | 
	
		
			
				|  |  | +                        """ + tableName;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
	
		
			
				|  | @@ -3687,17 +3826,17 @@ public class PitcherDataServiceImpl implements IPitcherDataService {
 | 
	
		
			
				|  |  |                      ROUND(IF(SUM(hundred_user_num) > 0 , SUM(cost) / SUM(hundred_user_num), 0), 2) as hundred_user_num_cost,
 | 
	
		
			
				|  |  |                  """ + pitcherDataTotalRoiSql() +
 | 
	
		
			
				|  |  |                  """
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | -                          SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | -                    ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | -                FROM 
 | 
	
		
			
				|  |  | -                """ + tableName;
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(da60) / SUM(IF(DATE_ADD(dt, INTERVAL 59 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi60,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(da90) / SUM(IF(DATE_ADD(dt, INTERVAL 89 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi90,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(m6) / SUM(IF(DATE_ADD(dt, INTERVAL 179 day) <= LocalDate.now(), cost, 0)), 0), 4) as roi180,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)) > 0 ,
 | 
	
		
			
				|  |  | +                                  SUM(m12) / SUM(IF(DATE_ADD(dt, INTERVAL 1 year) <= LocalDate.now(), cost, 0)), 0), 4) as roi1yaer,
 | 
	
		
			
				|  |  | +                            ROUND(IF(SUM(cost) > 0 , SUM(total) / SUM(cost), 0), 4) as roi_total
 | 
	
		
			
				|  |  | +                        FROM 
 | 
	
		
			
				|  |  | +                        """ + tableName;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |