2012-04-09 3 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 및 대상 IP 주소 목록과 통과 한 트래픽 양을 포함합니다. 주어진 기간 (예 : 지난 7 시간) 동안 최고 사용량을 얻으려고합니다. – Anil