【问题标题】:sqlite sorting SUM column valuessqlite 对 SUM 列值进行排序
【发布时间】:2012-04-09 18:34:48
【问题描述】:
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)?

【问题讨论】:

  • 请不要在标题前加上标签。

标签: sql sqlite sorting


【解决方案1】:

您在汇总之前使用 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;

【讨论】:

    【解决方案2】:

    您正在汇总您尝试排序的字段。这些单条数据不再单独存在,而是作为您分组依据的每个元素的总和。

    也许你想order by SUM(bytes)

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

    【讨论】:

    • 聚合stamp_updated 非常好。对于查询的内容,我建议使用 MAX。
    • 此表包含源 IP 地址和目标 IP 地址的列表以及已通过的流量。我试图在给定的时间间隔内(例如过去 7 小时)获得最高使用率
    猜你喜欢
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2010-10-14
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2012-10-16
    相关资源
    最近更新 更多