|
@@ -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;
|
|
|
}
|
|
|
|
|
|
|