下面是我用來計算用戶的平均會話持續時間的代碼。AVG(TIMESTAMPDIFF)mySQL返回錯誤的答案
SELECT
tbl.create_Date
,HourOfDay
,HourOfDay_AMPM
,AVG(TIMESTAMPDIFF(SECOND, tbl.minDt, tbl.maxDt))/60 AS Duration_mins
FROM (SELECT
i.session_id,
i.createDate,
DATE(CONVERT_TZ(i.createDate, '+00:00', '-04:00')) as create_Date,
HOUR(CONVERT_TZ(i.createDate, '+00:00', '-04:00')) as HourOfDay,
DATE_FORMAT(CONVERT_TZ(i.createDate,'+00:00','-04:00'), '%l%p') as HourOfDay_AMPM,
min(i.createDate) minDt,
max(i.createDate) maxDt,
(max(i.createDate) - min(i.createDate))/60 as Duration
FROM impressions i
WHERE i.createDate >= current_date
AND HOUR(CONVERT_TZ(i.createDate, '+00:00', '-04:00')) >=9
AND HOUR(CONVERT_TZ(i.createDate, '+00:00', '-04:00')) < 22
AND i.session_Id <> ''
GROUP BY i.session_id
HAVING Duration > 0
ORDER BY i.createDate, i.session_id
) as tbl
GROUP BY tbl.create_DATE, tbl.HourOfDay
ORDER by tbl.create_Date
注意,在數據庫中的時區是在UTC,我需要在美國東部時間來顯示結果,這就是爲什麼我用CONVERT_TZ命令。
問題:我跑的內查詢和粘貼的原始數據轉換成Excel中,生成的透視表,並得到下面的結果
Hour Avg_duration_mins
9AM 14.43
10AM 59.17
11AM 24.55
12PM 12.69
2PM 1.27
然而,運行整個查詢作爲給我以下結果
Hour Avg_duration_mins
9AM 6.98
10AM 18.78
11AM 9.40
12PM 7.49
2PM 1.21
有手冊經過檢查,Excel的結果是準確的,是有道理的。爲什麼SQL變得瘋狂?我有一種感覺,問題在於AVG
函數和max
和min
的聚合。
更新:爲表的印象可以有相同session_id
session_id | createDate | actions |
023awv 2014-10-09 12:02 some action
023awv 2014-10-09 12:12 some action
023awv 2014-10-09 12:22 some action
023awv 2014-10-09 12:32 some action
011awv 2014-10-09 12:42 some action
023awv 2014-10-09 12:42 some action
023awv 2014-10-09 12:52 some action
023awv 2014-10-09 12:53 some action
052brw 2014-10-09 13:02 some action
023awv 2014-10-09 13:05 some action
023awv 2014-10-09 13:06 some action
023awv 2014-10-09 13:08 some action
023awv 2014-10-09 13:12 some action
我想在每小時/每天讓每個會話的平均持續時間的多個條目。
任何幫助將不勝感激。
會議時長爲70分鐘。是否應該計入12點或13點的水平?你有這個查詢的方式是一個基本上隨機的選擇。 – Laurence 2014-10-09 22:01:28
這是一個很好的觀點,我也有問題。我認爲它會選擇會話的開始時間並將其存入該插槽。 – 2014-10-09 22:05:14
@Laurence:如果你能幫助我開始一個新鮮的石板,我將不勝感激。我覺得自己很困惑。如果你這樣做,你會怎麼做?我覺得'AVG'函數並沒有計算出我認爲應該達到的水平。運行內部查詢,我得到了每小時插槽的正確行數,我覺得按小時對它進行分組可以使平均值在該小時級別進行。我錯了嗎? – 2014-10-09 22:07:25