Agregar un filtro para la función MIN usando la condición WHERE Código de error: 1111. Uso no válido de la función de grupo

Necesito tener una consulta a continuación que devuelva el MIN (fecha) de la tabla, sin embargo, quiero agregar una condición where a la consulta para seleccionar las fechas solo entre 2021-01-01 y 2021-04-01.

SELECT MIN(file.date_received) as date
FROM `file`
JOIN `ref` ON `ref`.`r_id` = `file`.`r_id`
JOIN `screening` ON `screening`.`screen_id` = `ref`.`r_id`
WHERE `ref`.`out` = 4
GROUP BY `file`.`r_id

Cuando agrego la siguiente condición where a la consulta, aparece el siguiente error

Error Code: 1111. Invalid use of group function

SELECT MIN(file.date_received) as date
FROM `file`
JOIN `ref` ON `ref`.`r_id` = `file`.`r_id`
JOIN `screening` ON `screening`.`screen_id` = `ref`.`r_id`
WHERE `ref`.`out` = 4
AND  MIN(file.date_received)  > '2021-01-01' AND  MIN(file.date_received)  < '2021-04-01'
GROUP BY `file`.`r_id
Answer

para el resultado agregado necesita HAVING

SELECT MIN(file.date_received) as date
FROM `file`
JOIN `ref` ON `ref`.`r_id` = `file`.`r_id`
JOIN `screening` ON `screening`.`screen_id` = `ref`.`r_id`
WHERE `ref`.`out` = 4
GROUP BY `file`.`r_id
HAVING MIN(file.date_received)  > '2021-01-01'  AND MIN(file.date_received)  < '2021-04-01

No es necesario usar la cláusula MINin WHEREya que está filtrando los resultados en su SELECTdeclaración.

Para variar una fecha, podría usar BETWEENen su lugar.

SELECT MIN(file.date_received) as date
FROM `file`
JOIN `ref` ON `ref`.`r_id` = `file`.`r_id`
JOIN `screening` ON `screening`.`screen_id` = `ref`.`r_id`
WHERE `ref`.`out` = 4
AND  file.date_received BETWEEN CAST('2021-01-01' AS DATE) AND CAST('2021-04-01' AS DATE) 
GROUP BY `file`.`r_id