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

答えて

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

+0

このテーブルには、srcとdestinationのIPアドレスと通過したトラフィックの量のリストが含まれています。私は一定の間隔(例えば、過去7時間)にわたって最高使用率を得ようとしています。 – Anil