MySQL MAX de SOMME

Cela me fait flipper!
A obtenu les données suivantes:

+----+-----+-------+------------+
| ID | REG | VALUE | DATE       |
+----+-----+-------+------------+
| 1  | 1A  | 100   | 2009-01-01 |
| 1  | 1A  | 100   | 2009-02-01 |
| 1  | 1A  | 100   | 2009-03-01 |
| 2  | 1B  | 100   | 2009-01-01 |
| 2  | 1B  | 100   | 2009-02-01 |
| 2  | 1B  | 100   | 2009-03-01 |
| 2  | 1C  | 100   | 2009-01-01 |
| 2  | 1C  | 100   | 2009-02-01 |
| 2  | 1C  | 200   | 2009-03-01 |
+----+-----+-------+------------+

PS {modifier 0001} :: il y a un champ supplémentaire, qui doit également être utilisés pour filtrer les données, l'appeler {TYPE}, pourrait obtenir "UNIQUE" ou "MULTIPLES" comme valeur.

Je veux obtenir le MAX entre SOMME(de chaque {REG}) pour chaque {ID}. Évidemment, c'est une simple représentation, le tableau obtenu, jusqu'à 64985928 registres et {DATE} est le filtrage des données.

Qui sera, la 1re étape d'obtenir la SOMME pour chaque {REG}:

+----+------+
| ID | SUM  |
+----+------+
| 1  | 300  |
| 2  | 300  |
| 2  | 400  |
+----+------+

C'est:

SELECT 
  SUM(value) 
FROM 
  table 
WHERE
  (date BETWEEN '2009-01-01' AND '2009-03-01')
GROUP BY
  reg;

Et puis, tirer le maximum de chaque SOMME, qui est l'endroit où je suis coincé:

+----+------+
| ID | MAX  |
+----+------+
| 1  | 300  |
| 2  | 400  |
+----+------+

J'ai essayé:

SELECT
  a.id,
  MAX(b.sum)
FROM
  table a,
  (SELECT 
     SUM(b.value) 
   FROM 
     table b 
   WHERE 
     (b.date BETWEEN '2009-01-01' AND '2009-03-01') AND (a.id = b.id)
   GROUP BY
     b.reg);

Une idée?
PS: Désolé pour les fautes.

PS {modifier 0002} Va exemplaire original des requêtes et des données, qu'il aide à mieux.

$QUERY:

SELECT 
  clienteid AS "CLIENTE",
  SUM(saldo) AS "SUMA" 
FROM
  etl.creditos
WHERE
   (titularidad_tipo LIKE 'TITULAR')
AND
   (mes_datos BETWEEN '2008-11-01' AND '2009-10-01')
GROUP BY
  nuc 
ORDER BY
  clienteid;

Obtenu:

+---------+-------------+
| CLIENTE | SUMA        |
+---------+-------------+
| 64      | 1380690.74  |
| 187     | 1828468.71  |
| 187     | 2828102.80  |
| 325     | 26037422.21 |
| 389     | 875519.05   |
| 495     | 20084.93    |
| 495     | 109850.46   |
+---------+-------------+

Alors, ce que je cherche est:

+---------+-------------+
| CLIENTE | MAX         |
+---------+-------------+
| 64      | 1380690.74  |
| 187     | 1828468.71  |
| 325     | 26037422.21 |
| 389     | 875519.05   |
| 495     | 109850.46   |
+---------+-------------+  

Mais en cours d'exécution:

SELECT
    clienteid AS "CLIENTE",
    MAX(suma)
FROM
    (SELECT clienteid, SUM(saldo) AS "suma" FROM etl.creditos
    WHERE (mes_datos BETWEEN '2009-08-01' AND '2009-10-01') AND (titularidad_tipo LIKE 'TITULAR')
    GROUP BY clienteid, nuc) AS sums
GROUP BY
    clienteid
ORDER BY
    clienteid;

Résultats:

+---------+-------------+
| CLIENTE | SUMA        |
+---------+-------------+
| 64      | 336879.21   |
| 187     | 1232824.51  |
| 325     | 3816173.62  |
| 389     | 218423.83   |
| 495     | 34105.99    |
+---------+-------------+
avez-vous lu sur having ??
envisager de fournir une sqlfiddle

OriginalL'auteur Wolfchamane | 2013-08-26