2016-04-30 14 views
0

私は1ヶ月の各日ごとにそれぞれの最大数を取得しようとしています。次に、その月の最大値を合計します。クエリの最大値を合計する方法。 sum(max(value))

 $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 
         ); 

私のカウントの方法は、1日を通して増分することです。したがって、たとえば、私は500/5/2016 08:00:00に500カウントを持っていますが、5/5/2016 23:59:59のカウントは800です。私は800 800に800を加えないでください。

私は与えられた月の毎日の最大値を取っていきたいと思います。次に、すべての最大値を合計してその月のサマリーを作成します。

答えて

0

月額testLocationの表を要約しようとしているようです。あなたが何をしようとしているのかを正確に推測するのは難しいです。

編集

まず、あなたは最高Count値を取得するには、毎日のロールアップを必要としています。その日のCountの最高値で、あなたの毎日の行を取得します

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

次に、毎日のロールアップの行を追加するには、毎月のロールアップが必要です。これを行うには、毎日のロールアップを仮想テーブルとして使用します。

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) 

これはあなたに必要なものを取得します。 LAST_DAY() functionは便利です。DATETIMEまたはDATEの値をとり、月の最終日に変換します。

関連する問題