@Mapper
public interface ProductMapper {
@Select("select * from tb_p")
public List<Product> getAllProducts();
@SelectProvider(type = CHMapperProvider.class, method = "getFunnelByEvents")
public ResultBean autoFinnel(Event e);
class CHMapperProvider {
public static String getFunnelByEvents(Event e) {
String evs = e.getEvs();
String[] split = evs.split("-");
StringBuilder sb = new StringBuilder();
StringBuilder sum = new StringBuilder();
StringBuilder res = new StringBuilder();
for (int i = 0; i < split.length; i++) {
sb.append("eventId='" + split[i]+"'").append(",");
// sum.append("sum(if(cc=="+split.length-i+" ++",1,0)) as s,")
sum.append("sum(if(cc==").append(split.length - i).append(",1,0)) AS v").append(i + 1 + ",");
for (int j = split.length - i; j > 0; j--) {
res.append("v").append(j + "+");
}
res.deleteCharAt(res.length() - 1).append(" o").append(i + 1).append(",");
}
String es = sb.deleteCharAt(sb.length() - 1).toString();
String sm = sum.deleteCharAt(sum.length() - 1).toString();
String rr = res.deleteCharAt(res.length() - 1).toString();
String sql = "select \n" +
"total,\n" +
rr +
" from\n" +
"(select\n" +
"count(1) total ,\n" +
sm +
" from\n" +
"(select\n" +
"deviceId ,\n" +
"windowFunnel(3600)(\n" +
"toDateTime(ctime) ,\n" +
es +
") as cc\n" +
"from\n" +
"tb_log \n" +
"group by deviceId));";
return sql;
}
}
}
mybatis根据参数自定义SQL
猜你喜欢
转载自blog.csdn.net/qq_37933018/article/details/109325400
今日推荐
周排行