2012-04-09 51 views
-2
SELECT SUM(bytes),stamp_updated 
from acct 
where stamp_updated BETWEEN datetime('now', 'localtime','-7 hours') AND datetime('now', 'localtime') 
GROUP BY ip_src 
ORDER BY bytes DESC limit 10; 
 
    48498275|2012-04-09 11:26:01 
    6977282|2012-04-09 08:27:01 
    1192705|2012-04-09 08:46:02 
    3971336|2012-04-09 09:46:04 
    1909543|2012-04-09 11:28:04 
    265829|2012-04-09 09:11:02 
    1234909|2012-04-09 10:28:04 
    2396834|2012-04-09 11:28:02 
    192638|2012-04-09 09:00:01 
    30766141|2012-04-09 11:31:01 

爲什麼不是第一列沒有得到正確排序(DESC)?sqlite的排序SUM列值

+1

請不要在標題前添加標籤。 – MPelletier 2012-04-09 18:39:21

回答

3

您正在訂購bytes專欄,然後彙總。試試這個:

SELECT SUM(bytes) AS total_bytes, stamp_updated 
FROM acct 
WHERE stamp_updated BETWEEN datetime('now', 'localtime','-7 hours') AND datetime('now', 'localtime') 
GROUP BY ip_src 
ORDER BY total_bytes DESC limit 10; 
1

您正在對您嘗試排序的字段進行彙總。這些單獨的數據片段不再單獨存在,而是作爲您分組的每個元素的總數。

也許您正在嘗試order by SUM(bytes)

除此之外,請考慮按select語句中的所有非聚合字段進行分組......您在組中缺少stamp_updated

+1

聚合'stamp_updated'非常好。我建議一個MAX,這個查詢似乎是關於什麼的。 – MPelletier 2012-04-09 18:44:39

+0

此表包含src和目標IP地址列表以及已經通過的流量。我試圖在給定的時間間隔內獲得最高使用量(例如,過去7個小時) – Anil 2012-04-09 19:28:55