簡體   English   中英

PHP-MYSQL:最近12個月到每個月的最后一天

[英]PHP - MYSQL: Last 12 months first to last day of each month

我參與的一個項目需要獲得最近12個月中每個月的平均發票總額。 我可以通過執行12個查詢(每個月1個查詢)輕松地獲得所需的信息,但是非常丑陋,我最終得到12個唯一變量(id而不是具有loop),而且我知道有更好的方法。

任何人都可以以最佳方式獲得以下幫助:

SELECT AVG(invoice_total) FROM invoice WHERE date between '2015-01-01' AND '2015-01-31'
SELECT AVG(invoice_total) FROM invoice WHERE date between '2015-02-01' AND '2015-02-28'
SELECT AVG(invoice_total) FROM invoice WHERE date between '2015-03-01' AND '2015-03-31'

等等...

我將它們繪制在圖表上,因此我每個月都需要一個數據點。

最終結果將是這樣的:

Jan: $2323
Feb: $3523
March: $6453

等等...但將從當月的12個月前開始。

謝謝。

附注:為了方便起見,這是我最近90天的繪制方式:

$get_unconfirmed_appointments = "
SELECT total
     , invoice_date 
  FROM invoice 
 WHERE clinic_id = 20
   AND invoice_date >= '$date' 
   AND invoice_date <= '$date_two' 
 ORDER 
    BY invoice_date ASC
";
        $result = $conn->query($get_unconfirmed_appointments) or die($conn->error.__LINE__);    
            while($row = $result->fetch_assoc()) {
                    $totals[$row['invoice_date']][] = $row['total'];
            }
    $sub_arrays = array_chunk($totals, 3);
    foreach ($sub_arrays as $threedays) {
        foreach ($threedays as $value) {
            foreach ($value as $val) {
                $all[] = $val;
            }                                   
        }
        $average = array_sum($all) / count($all);
        $data_point=round($average,2);
        plot($data_point);
    }

我需要與上述相同的想法,但需要持續12個月。 每個月的平均值。

您可以使用MONTHNAME函數並按以下方式分組:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month

您的SQL將是這樣的:

SELECT AVG(invoice_total), MONTHNAME(invoice_date)  FROM invoice WHERE invoice_date BETWEEN '2014-11-11'  AND '2015-02-09' GROUP BY MONTHNAME(invoice_date)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM