2012-04-11 12 views
0

私はエラーを記録するシステムを持っています。私の間違いからの選択:私はグループ化を正しく行っていますか?

私が欲しいのは、ユーザーが他のエラーを「生産」しているかどうかを確認することです。たとえばERROR FOOの場合、ユーザーAに4つのエラーがあり、ユーザーBに4000があると、ユーザーBが何か問題を起こしているというロジックが表示されます。

私は私のやり方をグループ化できますか?これは修正されたバージョンで、選択項目はグループ化されたメッセージのみを集計してカウントし、ERROR FOOが私の例を4004としました。

答えて

1

メッセージが異なる場合、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、アルファベット順


ただし、1人につき複数のレコードを返すことができれば、あなたのスクリプトには問題はありません。それはそれは私が一人につき複数のレコードを取得することオーケーだERR

+0

で始まるmessageを持つレコードのみを表示し、personidとテーブルで最もているもの順messageの一覧が表示されます。私はエラーが欲しいこの選択では、私もログを記録するので、人が複数の異なる警告を持っている場合は、複数のレコードが得られればそれはうまいです。あなたの確認をありがとう、私のSQLは進行中の仕事です:D – Jason94

+0

@ Jason94あなたの質問は良いと思います。私は私の答えを更新しました。 – Curt

関連する問題