早上是04.17,我不能確定什麼是錯的!請幫助!MYSQL - 總結不符合預期
我有這樣的列表表user_logs:
id | user_id | action | reference | time
----------------------------------------
1 | 1 | login | 0 | 1333800404
2 | 1 | logout | 1 | 1333800424
3 | 1 | login | 0 | 1333800434
4 | 1 | logout | 3 | 1333800444
和查詢:
SELECT reference r,
sum(time-(SELECT time FROM users_logs WHERE id = r)) time_of_logon
FROM users_logs
WHERE user_id = 1 AND action = 'logout'
不幸的是sum()函數返回意外的值。
如果刪除總和()我得到這樣的查詢:
SELECT reference r,
(time-(SELECT time FROM users_logs WHERE id = r)) time_of_logon
FROM users_logs
WHERE user_id = 1 AND action = 'logout'
和結果:
r | time_of_logon
-----------
1 | 20
3 | 10
如所預期的 - 我印有行動 '註銷' 中的所有行的user_id = 1遞減從我從子查詢中得到的時間(登出時間與註銷連接)的時間。現在,我有時間用戶登錄。迄今爲止這麼好。現在,當我添加總和(就像在第一個查詢中),我會期待sum_time_of_logon(應該是30)。如果我把平均函數,而不是總和我期望15((10 + 20)/ 2)。
琛版本:我得到60, 平均版本 - 我得到30
'時間' 字段類型是整數。
我的猜測: 我想這莫名其妙的MySQL不返回2行,因爲它顯示,但它的工作對4行,還是雙打主查詢下面一些計算。因爲 - avg和sum結果都是它的兩倍。
也許這是時間問題,我的大腦不工作了,但我不知道什麼是錯的。請幫忙。
內部選擇看起來很糟糕。你想要做什麼以及給定表格的預期結果是什麼? – 2012-04-09 04:49:15
你能解釋一下你想查詢的內容嗎?猜測用戶登錄的持續時間 – 2012-04-09 05:31:35