2016-04-30 7 views
0

Ich versuche, jeden maximalen Zähler für jeden Tag in einem Monat zu erfassen. Dann möchte ich die Maximalwerte für den Monat summieren.Wie die Maximalwerte in einer Abfrage z. Summe (max (Wert))

 $result = mysql_query(
          " 
          SELECT DATE_FORMAT(orderDate,'%M %e, %Y') orderDate, MAX(Count) AS maxCount 
          FROM 
           (
           SELECT DATE_FORMAT(orderDate,'%M %e, %Y') orderDate, SUM(Count) AS sumCount 
           FROM testLocation 
           WHERE orderDate >= '$data1' AND orderDate < '$data2' + INTERVAL 1 DAY 
           ) 
          GROUP BY MONTH(orderDate) 
          " 
          ,$link 
         ); 

Die Art, wie ich die Zählung habe, ist, dass es im Laufe des Tages zunimmt. So zum Beispiel habe ich eine Anzahl von 500 zum Zeitpunkt 5/5/2016 08:00:00, aber am Ende des Tages 5/5/2016 23:59:59 ist der Zählerstand 800. Ich möchte nur die 800 greifen Nummer und nicht die 500 zu den 800.

Ich möchte den maximalen Wert von jedem Tag eines bestimmten Monats nehmen. Dann möchte ich alle maximalen Werte summieren, um eine Zusammenfassung für den Monat zu erstellen.

Antwort

0

Ich schätze, Sie versuchen, Ihre testLocation Tabelle nach Monat zusammenzufassen. Es ist schwer aus Ihrer Anfrage zu erraten, was Sie genau machen wollen.

bearbeiten:

Zuerst müssen Sie ein tägliches Rollup, den höchsten Count Wert zu erhalten.

   SELECT DATE(orderDate) AS day, 
        MAX(Count)  AS dayCount 
       FROM testLocation 
      GROUP BY DATE(orderDate) 

, dass Sie eine Zeile für jeden Tag bekommt, mit dem höchsten Wert von Count für diesen Tag.

Dann brauchen Sie ein monatliches Rollup, um die Zeilen des täglichen Rollups zusammenzufassen. Verwenden Sie dazu das tägliche Rollup als virtuelle Tabelle.

SELECT LAST_DAY(day) monthEnding, 
     SUM(dayCount) AS monthSum 
    FROM (
      SELECT DATE(orderDate) AS day, 
        MAX(Count)  AS dayCount 
       FROM testLocation 
      GROUP BY DATE(orderDate) 
     ) m 
    GROUP BY LAST_DAY(day) 

Das bekommt Sie, was Sie wollen. Die LAST_DAY() function ist hier bequem: Es dauert jede DATETIME oder DATE Wert und konvertiert es zum letzten Tag des Monats.