contract.deleted = 0
AND contract_product.deleted = 0
AND product.deleted = 0
AND contract.audit_status = ${@cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum@APPROVE.status}
AND contract.owner_user_id IN
#{userId}
AND contract.order_date BETWEEN #{times[0],javaType=java.time.LocalDateTime} AND #{times[1],javaType=java.time.LocalDateTime}
AND product.category_id IN
#{categoryId}
AND product.id = #{productId}
SELECT category.id AS category_id,
COALESCE(category.name, '未分类') AS category_name,
product.id AS product_id,
product.name AS product_name,
contract.id AS contract_id,
contract.no AS contract_no,
contract.name AS contract_name,
contract.owner_user_id,
owner.nickname AS owner_user_name,
customer.id AS customer_id,
customer.name AS customer_name,
contract_product.product_price,
contract_product.count AS product_count,
contract_product.total_price AS product_total_price
FROM crm_contract_product contract_product
INNER JOIN crm_contract contract ON contract_product.contract_id = contract.id
INNER JOIN crm_product product ON contract_product.product_id = product.id
LEFT JOIN crm_product_category category ON product.category_id = category.id AND category.deleted = 0
LEFT JOIN crm_customer customer ON contract.customer_id = customer.id AND customer.deleted = 0
LEFT JOIN system_users owner ON contract.owner_user_id = owner.id AND owner.deleted = 0
WHERE
ORDER BY category.id ASC, product.id ASC, contract.order_date DESC
SELECT category.id AS category_id,
COALESCE(category.name, '未分类') AS category_name,
COUNT(DISTINCT contract.id) AS contract_count,
COALESCE(SUM(contract_product.count), 0) AS product_count,
COALESCE(SUM(contract_product.total_price), 0) AS product_total_price
FROM crm_contract_product contract_product
INNER JOIN crm_contract contract ON contract_product.contract_id = contract.id
INNER JOIN crm_product product ON contract_product.product_id = product.id
LEFT JOIN crm_product_category category ON product.category_id = category.id AND category.deleted = 0
WHERE
GROUP BY category.id, category.name
ORDER BY product_count DESC, product_total_price DESC