• MiniDao + MYSQL 复杂SQL 客户转化周期统计


    SELECT departid,departname,create_time,
    SUM( IF(conversion_time = ${((startDate?substring(2,7))?replace("-",""))?number},conversion_count,0)) as 'one',
    SUM( IF(conversion_time = ${((startDate?substring(2,7))?replace("-",""))?number} + 1,conversion_count,0)) as 'two',
    SUM( IF(conversion_time = ${((startDate?substring(2,7))?replace("-",""))?number} + 2,conversion_count,0)) as 'three',
    SUM( IF(conversion_time = ${((startDate?substring(2,7))?replace("-",""))?number} + 3,conversion_count,0)) as 'four',
    SUM( IF(conversion_time = ${((startDate?substring(2,7))?replace("-",""))?number} + 4,conversion_count,0)) as 'five',
    SUM( IF(conversion_time = ${((startDate?substring(2,7))?replace("-",""))?number} + 5,conversion_count,0)) as 'six',
    SUM( IF(conversion_time = ${((startDate?substring(2,7))?replace("-",""))?number} + 6,conversion_count,0)) as 'seven',
    SUM( IF(conversion_time > ${((startDate?substring(2,7))?replace("-",""))?number} + 6,conversion_count,0)) as 'more'
    FROM (
    SELECT org_code,
    parentdepartid,
    departid,
    departname,
    create_time,
    conversion_time,
    conversion_period,
    COUNT(id) AS conversion_count
    FROM
    (
    SELECT
    t_s_depart.org_code,
    t_s_depart.parentdepartid,
    t_s_depart.id as departid,
    t_s_depart.departname,
    c.id,
    c.create_date AS lead_create_date,
    public_sea_operation_record.create_date AS customer_create_date,
    DATE_FORMAT( c.create_date, '%y%m' ) as create_time,
    DATE_FORMAT( public_sea_operation_record.create_date, '%y%m' ) AS conversion_time,
    PERIOD_DIFF(DATE_FORMAT(public_sea_operation_record.create_date,'%y%m'),DATE_FORMAT(c.create_date,'%y%m')) + 1 AS conversion_period
    FROM customer c
    INNER JOIN public_sea_operation_record ON c.id = public_sea_operation_record.obj_id AND public_sea_operation_record.operation_type = 5
    AND c.is_deleted = 0 AND c.stage = 2
    <#-- 操作时间:范围 -->
    <#if startDate?? && startDate?has_content>
    <#-- ${startDate?string["yyyy-MM-dd HH:mm:ss"]}-->
    AND c.create_date >= :startDate
    AND c.create_date <= CONCAT(LAST_DAY(DATE_FORMAT(:startDate ,'%Y-%m-%d')),' 23:59:59')
    </#if>
    <#if endDate?? && endDate?has_content>
    <#-- ${endDate?string["yyyy-MM-dd HH:mm:ss"]}-->
    AND c.create_date <= :endDate
    </#if>
    <#-- 操作部门:关联部门 -->
    <#if ( deptIdList )?? && deptIdList?size gt 0 >
    INNER JOIN crm_user_customer ON crm_user_customer.obj_id = c.id AND crm_user_customer.priority = 1
    INNER JOIN t_s_base_user ON crm_user_customer.member_id = t_s_base_user.id
    <#-- 关联用户状态-->
    <#if userStatus?? && userStatus?has_content>
    AND t_s_base_user.status = :userStatus
    </#if>
    INNER JOIN t_s_depart ON t_s_base_user.departid = t_s_depart.id
    AND t_s_depart.id IN ( ${DaoFormat.getInStrs ( deptIdList )} )
    <#else>
    <#-- 关联用户状态-->
    <#if userStatus?? && userStatus?has_content>
    INNER JOIN crm_user_customer ON crm_user_customer.obj_id = c.id AND crm_user_customer.priority = 1
    INNER JOIN t_s_base_user ON crm_user_customer.member_id = t_s_base_user.id
    AND t_s_base_user.status = :userStatus
    </#if>
    </#if>
    ) customer_conversion
    GROUP BY
    departid,
    create_time,
    conversion_time,
    conversion_period
    ) customer_conversion_count
    GROUP BY departid,create_time
    ORDER BY org_code,parentdepartid,departname

  • 相关阅读:
    Android实现监测网络状态
    安卓开源库之动画篇
    安卓向服务器发送List数据
    Material Design综合实例
    Material Design入门(三)
    Android之Fragment(二)
    Android之Fragment(一)
    Material Design入门(二)
    Material Design入门
    Android之ActionBar
  • 原文地址:https://www.cnblogs.com/rgqancy/p/13038519.html
Copyright © 2020-2023  润新知