o.del_flag = 0 AND c.del_flag = 0
AND DATE(o.create_time) >= #{bo.startTime}
AND DATE(o.create_time) <= #{bo.endTime}
AND o.salesman IN
#{salesman}
AND o.customer_id IN
#{customerId}
AND c.customer_level IN
#{level}
AND c.industry IN
#{industry}
AND o.order_status IN
#{status}
AND o.finance_status IN
#{status}
AND o.order_type IN
#{type}
AND o.order_amount >= #{bo.minOrderAmount}
AND o.order_amount <= #{bo.maxOrderAmount}
AND o.unpaid_amount > 0
AND c.company_name LIKE CONCAT('%', #{bo.companyNameKeyword}, '%')
AND o.order_code LIKE CONCAT('%', #{bo.orderCodeKeyword}, '%')
AND NOT EXISTS (
SELECT 1 FROM crm_sales_objection obj
WHERE obj.order_id = o.order_id AND obj.del_flag = 0
)
SELECT
COUNT(o.order_id) as totalOrderCount,
COALESCE(SUM(o.order_amount), 0) as totalSalesAmount,
COUNT(CASE WHEN o.order_status = 3 THEN 1 END) as completedOrderCount,
COALESCE(SUM(CASE WHEN o.order_status = 3 THEN o.order_amount ELSE 0 END), 0) as completedSalesAmount,
COALESCE(SUM(o.unpaid_amount), 0) as totalUnpaidAmount,
COALESCE(AVG(o.order_amount), 0) as avgOrderAmount
FROM crm_order o
LEFT JOIN crm_customer c ON o.customer_id = c.customer_id
SELECT
o.order_id,
o.order_code,
c.customer_code,
c.company_name,
c.contact_person,
c.customer_level,
c.industry,
o.order_amount,
o.salesman,
o.delivery_date,
o.order_status,
o.finance_status,
o.unpaid_amount,
o.create_time,
COALESCE(item_stats.item_count, 0) as itemCount,
COALESCE(obj_stats.objection_count, 0) as objectionCount
FROM crm_order o
LEFT JOIN crm_customer c ON o.customer_id = c.customer_id
LEFT JOIN (
SELECT
order_id,
COUNT(*) as item_count
FROM crm_order_item
WHERE del_flag = 0
GROUP BY order_id
) item_stats ON o.order_id = item_stats.order_id
LEFT JOIN (
SELECT
order_id,
COUNT(*) as objection_count
FROM crm_sales_objection
WHERE del_flag = 0
GROUP BY order_id
) obj_stats ON o.order_id = obj_stats.order_id
ORDER BY ${bo.orderBy}
${bo.sortDirection}
ORDER BY o.create_time DESC
SELECT
o.salesman,
COUNT(o.order_id) as orderCount,
COALESCE(SUM(o.order_amount), 0) as salesAmount,
ROUND(
COALESCE(SUM(o.order_amount), 0) * 100.0 /
NULLIF((
SELECT SUM(o2.order_amount)
FROM crm_order o2
LEFT JOIN crm_customer c2 ON o2.customer_id = c2.customer_id
o2.del_flag = 0 AND c2.del_flag = 0
AND DATE(o2.create_time) >= #{bo.startTime}
AND DATE(o2.create_time) <= #{bo.endTime}
AND o2.salesman IN
#{salesman}
AND o2.customer_id IN
#{customerId}
AND c2.customer_level IN
#{level}
AND c2.industry IN
#{industry}
AND o2.order_status IN
#{status}
AND o2.finance_status IN
#{status}
AND o2.order_type IN
#{type}
AND o2.order_amount >= #{bo.minOrderAmount}
AND o2.order_amount <= #{bo.maxOrderAmount}
AND o2.unpaid_amount > 0
AND c2.company_name LIKE CONCAT('%', #{bo.companyNameKeyword}, '%')
AND o2.order_code LIKE CONCAT('%', #{bo.orderCodeKeyword}, '%')
AND NOT EXISTS (
SELECT 1 FROM crm_sales_objection obj
WHERE obj.order_id = o2.order_id AND obj.del_flag = 0
)
), 0),
2
) as percentage
FROM crm_order o
LEFT JOIN crm_customer c ON o.customer_id = c.customer_id
GROUP BY o.salesman
ORDER BY salesAmount DESC
SELECT
c.customer_level,
COUNT(DISTINCT c.customer_id) as customerCount,
COUNT(o.order_id) as orderCount,
COALESCE(SUM(o.order_amount), 0) as salesAmount
FROM crm_order o
LEFT JOIN crm_customer c ON o.customer_id = c.customer_id
GROUP BY c.customer_level
ORDER BY salesAmount DESC
SELECT
COALESCE(c.industry, '未分类') as industry,
COUNT(DISTINCT c.customer_id) as customerCount,
COUNT(o.order_id) as orderCount,
COALESCE(SUM(o.order_amount), 0) as salesAmount
FROM crm_order o
LEFT JOIN crm_customer c ON o.customer_id = c.customer_id
GROUP BY c.industry
ORDER BY salesAmount DESC