sql >> Base de Datos >  >> RDS >> Mysql

Registros seleccionados de MySQL con una suma mayor que el umbral

Esto parece estar ajustado para un conjunto de resultados UNION. Entonces, debe obtener 2 consultas (una para cada "criterio") y unir su resultado usando la unión.

La primera consulta sería:

SELECT f1.user_id, f1.id AS file_id, SUM(f1.fileSize) AS totalSum
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING totalSum <= 350000;

Ahora necesita la consulta que selecciona si el tamaño es demasiado grande:

SELECT f1.user_id, f1.id AS file_id, MAX(f1.fileSize) AS max
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING max >= 350000;

A continuación, desea combinarlos en una sola consulta. Dado que ambos tienen los mismos campos, simplemente puede "unir" el resultado

SELECT f1.user_id, f1.id AS file_id, SUM(f1.fileSize) AS totalSum
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING totalSum <= 350000
UNION
SELECT f1.user_id, f1.id AS file_id, MAX(f1.fileSize) AS max
FROM files AS f1 
WHERE f1.user_id = 1
GROUP BY f1.id 
HAVING max >= 350000;

PD:Tenías "ON f1.id>=f2.id" como criterio de unión, no estoy seguro de por qué> eso sería muy específico para cada caso :)