2012-04-11 7 views
0

나는 오류를 기록하는 시스템을 가지고있다. 내 오류에서 선택 :그룹별로 정리하고 있습니까?

내가 원하는 것은 사용자가 더 많은 오류를 "생산"하는지 확인하는 것입니다. 예를 들어, ERROR FOO, 사용자 A가 4 개의 오류를 갖고 사용자 B가 4000 인 경우 로직 B는 사용자 B가 잘못된 작업을하고 있음을 나타냅니다.

하지만 내가하는 방식을 그룹화 할 수 있습니까? 이것은 선택 사항이 그룹화 된 메시지만을 그룹화하고 계산 한 수정 된 버전으로, ERROR FOO가 내 예제에서 4004를 얻도록 해결됩니다.

답변

1

귀하의 질의를 사용하여 메시지가 다른 경우, 한 사람당 여러 개의 기록을 얻을 수 있습니다.

당신이 유일한 사람 당 하나 개의 레코드를 원하는 경우에, 당신은 예를 들어 당신이 할 수 aggregate function

message 주위에 넣을 필요가있다 :

여기
SELECT MIN(message), personid, count(*) 
FROM errorlog 
WHERE time BETWEEN TO_DATE(foo) AND TO_DATE(foo) AND substr(message,0,3) = 'ERR' 
GROUP BY personid, message 
ORDER BY 3 

내가 변경 한 messageMIN(message)에 반환하는 해당 사용자의 첫 번째 message (알파벳 순).


하지만 한 명당 여러 개의 레코드를 반환하면 기꺼이 스크립트에 문제가 없습니다. 그것은 단지 message 그것은 내가 인당 여러 레코드를 얻을 좋아요입니다 ERR

+0

로 시작하는이 기록을 표시하는 테이블 가장에있는 사람의 지시 personidmessage의 목록이 표시됩니다. 이 선택에서 나는 오류를 원한다. 나는 또한 경고를 기록한다. 만약 사람이 여러개의 다른 경고를 가지고 있다면, 그것들은 여러개의 기록을 남기면 좋다. 귀하의 확인을 주셔서 감사합니다, 내 SQL은 진행중입니다 : D – Jason94

+0

@ Jason94 귀하의 쿼리는 괜찮다고 생각합니다. 내 대답을 업데이트했습니다. – Curt

관련 문제