SQL里WHERE如何只限定某项?

我想要用“总考核毛利/天数”得到日均毛利,这里的天数需要根据最小订单日期是否在本月之前而决定,但是我的总毛利又只统计本月的。
所以导致现在的“MIN( 订单日期 )”只能被总毛利的条件限定。请问如何能让我的“MIN( 订单日期 )”突破后面“WHERE MONTH ( 订单日期 )= MONTH ( CURRENT_DATE - 1 ) ”的限制呢?

SELECT `业务代表`,
CASE WHEN MONTH (MIN( `订单日期` ))< MONTH ( CURRENT_DATE ) 
        THEN ROUND(SUM( `考核毛利` )/ DATEDIFF(CURRENT_DATE - 1,DATE_ADD( LAST_DAY( CURRENT_DATE ), INTERVAL - 1 MONTH ))) 
        ELSE ROUND(SUM( `考核毛利` )/ DATEDIFF(CURRENT_DATE,MIN( `订单日期` )))
        END AS "本月日均" 
    FROM `导购销售` 
    WHERE MONTH ( `订单日期` )= MONTH ( CURRENT_DATE - 1 ) 
GROUP BY `业务代表`;

您可以将限制最小订单日期的条件放到一个子查询中,然后使用该子查询中的结果来计算日均毛利。具体操作如下:

SELECT 业务代表,
CASE
WHEN MIN_ORDER_DATE < DATE_ADD( LAST_DAY( CURRENT_DATE ), INTERVAL - 1 MONTH )
THEN ROUND(SUM( 考核毛利 )/ DATEDIFF(CURRENT_DATE - 1,DATE_ADD( LAST_DAY( CURRENT_DATE ), INTERVAL - 1 MONTH )))
ELSE ROUND(SUM( 考核毛利 )/ DATEDIFF(CURRENT_DATE,MIN_ORDER_DATE))
END AS "本月日均"
FROM (
SELECT 业务代表, MIN( 订单日期 ) AS MIN_ORDER_DATE, SUM( 考核毛利 ) AS TOTAL_PROFIT
FROM 导购销售
WHERE MONTH ( 订单日期 )= MONTH ( CURRENT_DATE - 1 )
GROUP BY 业务代表
) AS T
WHERE MONTH(MIN_ORDER_DATE) < MONTH(CURRENT_DATE)
GROUP BY 业务代表;

在上面的查询中,首先将限制最小订单日期的条件放在子查询中,使用MIN函数计算每个业务代表的最小订单日期和总毛利。然后,在主查询中,使用子查询中计算的最小订单日期和总毛利来计算日均毛利。同时,为了只限定最小订单日期的条件,我们在主查询中添加了一个WHERE子句,使用子查询中计算的最小订单日期来限定结果集,从而得到正确的日均毛利。