|
|
@@ -227,55 +227,18 @@
|
|
|
</select>
|
|
|
|
|
|
<select id="getQuoteRatio" resultType="BigDecimal">
|
|
|
- WITH
|
|
|
- day_all_order AS (
|
|
|
- SELECT user_id, COALESCE(SUM(count), 0) AS count
|
|
|
- FROM (
|
|
|
- SELECT user_id, COUNT(DISTINCT sub_order_no) AS count
|
|
|
- FROM sys_quote_record
|
|
|
- WHERE DATE(create_time) = CURRENT_DATE
|
|
|
- AND company_id = #{companyId}
|
|
|
- AND user_id = #{userId}
|
|
|
- GROUP BY user_id, sub_order_no
|
|
|
- ) AS subquery
|
|
|
- GROUP BY user_id
|
|
|
- ),
|
|
|
- day_cover_order AS (
|
|
|
- SELECT user_id, COALESCE(SUM(count), 0) AS count
|
|
|
- FROM (
|
|
|
- SELECT sqr.user_id, COUNT(DISTINCT sqr.sub_order_no) AS count
|
|
|
- FROM sys_quote_record sqr
|
|
|
- LEFT JOIN ins_area_company iac ON sqr.sub_order_no = iac.id
|
|
|
- WHERE iac.orderstatus = 3 AND DATE(sqr.create_time) = CURRENT_DATE
|
|
|
- AND iac.company_id = #{companyId}
|
|
|
- AND sqr.user_id = #{userId}
|
|
|
- GROUP BY sqr.user_id, sqr.sub_order_no
|
|
|
- ) AS subquery
|
|
|
- GROUP BY user_id
|
|
|
- )
|
|
|
- SELECT
|
|
|
- COALESCE((COALESCE(day_cover_order.count, 0) / NULLIF(day_all_order.count, 0)),0) * 100 AS rate
|
|
|
- FROM
|
|
|
- sys_quote_record sqr
|
|
|
- LEFT JOIN sys_user su ON sqr.user_id = su.id
|
|
|
- LEFT JOIN sys_dept sd ON su.dept_id = sd.id
|
|
|
- LEFT JOIN esm_ins_company eic ON eic.id = sqr.company_id
|
|
|
- LEFT JOIN day_all_order ON sqr.user_id = day_all_order.user_id
|
|
|
- LEFT JOIN day_cover_order ON sqr.user_id = day_cover_order.user_id
|
|
|
- WHERE
|
|
|
- 1=1
|
|
|
- AND sqr.user_id = #{userId}
|
|
|
- and sqr.company_id = #{companyId}
|
|
|
- and sqr.create_time BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
|
|
- GROUP BY
|
|
|
- sqr.user_id,
|
|
|
- company_id,
|
|
|
- eic.namesimple,
|
|
|
- day_all_order.count,
|
|
|
- day_cover_order.count,
|
|
|
- su.dept_id,
|
|
|
- sd.NAME,
|
|
|
- su.NAME,
|
|
|
- su.mobile
|
|
|
+ WITH daily_stats AS (SELECT user_id,
|
|
|
+ COUNT(DISTINCT sub_order_no) AS total_orders,
|
|
|
+ COUNT(DISTINCT CASE WHEN iac.orderstatus = 3 THEN sqr.sub_order_no END) AS covered_orders
|
|
|
+ FROM sys_quote_record sqr
|
|
|
+ LEFT JOIN ins_area_company iac
|
|
|
+ ON sqr.sub_order_no = iac.id AND iac.company_id = #{companyId}
|
|
|
+ WHERE sqr.create_time <![CDATA[ >= ]]> #{startTime}
|
|
|
+ AND sqr.create_time <![CDATA[ < ]]> #{endTime}
|
|
|
+ AND sqr.company_id = #{companyId}
|
|
|
+ AND sqr.user_id = #{userId}
|
|
|
+ GROUP BY user_id)
|
|
|
+ SELECT COALESCE((covered_orders * 100.0 / NULLIF(total_orders, 0)), 0) AS rate
|
|
|
+ FROM daily_stats;
|
|
|
</select>
|
|
|
</mapper>
|