2012-04-09 52 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