2014-10-03 53 views
1

我有一個'訂閱者'表,我想查詢並在圖表中顯示結果。從MySQL中檢索每日和每月總計以用於圖表

表中的記錄都有自己的「創建」字段,這是一個日期時間。我希望顯示的查詢結果爲所設定的時間,例如我想爲顯示總新增用戶:

  1. 過去7天,每天總。
  2. 最近30天,每天總計。
  3. 過去90天,每天總計。
  4. 過去12個月,每月總數。

我的圖表數據結構對於我的問題並非真正的關鍵,我只需要一個命名數組,鍵爲天(或月),值爲總數。

我的問題與實際的SQL查詢有關。例如,對於那些日子,我是否需要每天執行一個單一查詢,並使用數據時間間隔獲取每天的總數,或者是否存在(因爲我懷疑存在)這樣做的更有效的方式,很明顯,我不想爲3個月的圖表做90個查詢?

回答

1

你可以使用功能TIMESTAMPDIFF(),例如:

SELECT TIMESTAMPDIFF(DAY, created, NOW()) AS days, COUNT(*) AS num 
FROM subscribers 
WHERE created > DATE_SUB(NOW(), INTERVAL 3 MONTH) 
GROUP BY days 
ORDER BY days ASC 

我剛纔符文2萬人次的紀錄表此查詢,它是快速。

如果您希望在7天,30天,90天等天爆炸,只需使用PHP即可。