通過訂單資料表產生每日的訂單數量和增長量統計報表,該如何編寫sql?

來源:互聯網
上載者:User
比如說我有一個資料庫,裡面有一個訂單表,表名字為orders,這個訂單表有個欄位是add_time也就是添加訂單的時間戳記。
我現在想產生一張報表,報表上顯示 每天的訂單數量和增長量情況,而且還要帶上這個天數(Y-m-d格式即可,因為我最終要輸出到前端的echarts統計圖或者highcharts統計圖),請問這種需求sql語句該怎麼寫?
端午節快樂,謝謝回答!~

回複內容:

比如說我有一個資料庫,裡面有一個訂單表,表名字為orders,這個訂單表有個欄位是add_time也就是添加訂單的時間戳記。
我現在想產生一張報表,報表上顯示每天的訂單數量和增長量情況,而且還要帶上這個天數(Y-m-d格式即可,因為我最終要輸出到前端的echarts統計圖或者highcharts統計圖),請問這種需求sql語句該怎麼寫?
端午節快樂,謝謝回答!~

因為剛剛搭完一個運營系統的架構,提供一個基本思路:

  1. 建一個新表,把你需要統計的每一項資料,以及統計時間,作為新表的column,像這樣:

    create table analysis (        today_timestamp varchar(20),        order_count varchar(20),        increase_value varchar(20),        primary key (today_timestamp)    );
  1. 針對寫一個php指令碼,例如叫job.php來獲得當天你需要統計的資料:訂單數、增長量,等等。例如你需要所有訂單的數量就select count(*) from orders,具體怎麼寫就是另一個問題了。獲得之後,插入剛才那張表analysis裡。如果希望它自動執行,可以考慮用crontab。

  2. 當你要輸出到前端的echarts統計圖或者highcharts統計圖的時候,按日期讀取這個表中的資料就可以了

使用group by統計,日期欄位分為年,月,日,時,分,各為一列,用於統計,記得加索引和分表。

你的這個需求最好給一個範例的資料結構

SELECT    FROM_UNIXTIME(add_time, "%Y-%m-%d") order_date,    count(1) AS today_c,    count(1) - last_c AS change_with_lastFROM    ordersLEFT JOIN (    SELECT        FROM_UNIXTIME(add_time, "%Y-%m-%d") AS last_date,        count(1) AS last_c    FROM        orders    GROUP BY        FROM_UNIXTIME(add_time, "%Y-%m-%d")) last ON (    FROM_UNIXTIME(temp.add_time, "%Y-%m-%d") = DATE_ADD(        last.last_date,        INTERVAL 1 DAY    ))GROUP BY    FROM_UNIXTIME(add_time);

這個應該能達到預期的結果,但是最好還是使用一個資料表去統計每天的結果,不然效能會有問題

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.