2011-03-05 107 views
0

我有問題來SUM使用不同的messageid字節列。根據樣本表,我需要得到以下結果:Mysql與總和

USER1 10(我需要使用SUBSTRING_INDEX從用戶刪除域)
user2的10

但在我所有的測試,數量對於[email protected]字節被求和

USER1
USER2 10

username   messageid            bytes 
[email protected] [email protected] 10 
[email protected] [email protected] 10 
[email protected] [email protected] 5  
[email protected] [email protected] 5 

有什麼想法?

在此先感謝您的時間和幫助。
乾杯,
Marcello

+3

請發表您正在使用的查詢,明顯應該一起工作總和 – Orbit 2011-03-05 06:21:00

+1

正常,你得到20,爲什麼你應該得到10? – 2011-03-05 06:23:20

+0

@stunaz我*假設*當有多行具有相同的messageid時,只有一行應該貢獻給用戶的總數 - 即該表是非規範化的。這看起來很奇怪 - 你會認爲表格可能只是清理了相同的行並給出了唯一的索引(用戶名,messageid)... – tgdavies 2011-03-05 07:13:09

回答

6

您的數據有重複的記錄,您需要刪除。您可以使用下面的查詢 - 它有一個內部選擇,可以刪除重複項,然後根據用戶總結所有字節。

我沒去成的子問題,我想你處理它已經(如果你要我給它添加評論...)

SELECT 
    t.username, SUM(t.bytes) 
FROM 
(SELECT username, messageid, bytes 
    FROM my_table 
    GROUP BY username, messageid) as t 
GROUP BY t.username 
+0

謝謝。工作得很好。 – Marcello 2011-03-06 03:00:42