2012-06-12 496 views
1

有一張表格記錄電錶(kwh)的時間戳和整數讀數(date_entered,讀數)。想要繪製日常用法...大多數讀數是每天,有些是相隔多天 - 一天的隨機時間。希望每天返回之前條目差異的日均值。 *請注意平均值不準確。MySQL顯示每天隨機記錄的整數的平均值

Example Data: 
date_entered reading 
2012-06-01 17:02 18522 
2012-06-02 14:56 18641 
2012-06-03 10:55 18677 
2012-06-06 15:16 18702 
2012-06-11 13:28 18803 
2012-06-13 17:33 18850 

Example Output: 
Date    Daily Average 
2012-06-01 12:00  
2012-06-02 12:00 19 
2012-06-03 12:00 130 
2012-06-04 12:00 43 
2012-06-05 12:00 43 
2012-06-06 12:00 43 
2012-06-07 12:00 8 
2012-06-08 12:00 8 
2012-06-09 12:00 8 
2012-06-10 12:00 8 
2012-06-11 12:00 21 
2012-06-12 12:00 21 
2012-06-13 12:00 22 
+0

您是否有能力創建所有日期的表格,然後加入?如果是這樣,你可以很容易地填補如06-03和06-06之間的差距,然後創建一個函數,自底向上分佈在零之間。 – philwinkle

+0

是的,我可以這樣做......只是認爲他們可能是一種我沒有想到的更清潔的方式。 – Edward

回答

2

您可以按照自己計算平均值的步驟手動計算平均值。下面是它的明確的解釋:

你有閱讀的名單持有的兩條信息:

  • 時間戳
  • 千瓦時總

而你要每日消費中的一個列表:

  • 日期
  • 千瓦時消費

你應該遍歷第一個列表,填充第二個列表:

每個讀數(開始在您的記錄第二天):

  • 獲取最新項目在有前一個日期的Readings中。
  • 比較日期並獲得天數差異(必須> = 1)
  • 對於從最近一次閱讀後第二天到當前閱讀日期的每一天,請在每日消費中創建一個條目(除非它們是已經創建,因爲你在同一天有兩個讀數)
  • 獲得消費差異。
  • 將消費差異除以天數得到平均值。
  • 將該平均值指定爲從最近一次讀數之後到當前讀數日期爲止每種每日消費的Kwh消耗量。

Voilà!

即使您在同一天有多個閱讀,它也應該可以正常工作,因爲當您在同一天進行第二次閱讀時,它會覆蓋平均值(只要確保您每次只創建一個每日消耗項目天)。

+0

感謝您的建議......這可能是我會做的。 – Edward

+0

不客氣。這應該夠了。我擔心你想考慮一天的閱讀時間,這會迫使你在閱讀之前和之後將時間分成不同的時間段,交叉倍增的時間跨度和消費......並使其變得更加複雜獲得準確性。 – Dil