sqlite排序SUM列值

时间:2012-04-09 18:34:48

标签: sql sqlite sorting

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)?

2 个答案:

答案 0 :(得分: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 :(得分:1)

您正在对要排序的字段进行汇总。这些单个数据本身不再存在,而是作为您分组的每个元素的总数。

也许您正在尝试order by SUM(bytes)

除此之外,请考虑按照select语句中的所有非聚合字段进行分组...您在组中缺少stamp_updated