2016-05-20 4 views
0

プロセスがその種類によって区別される表があります。しかし、時には同じ種類のプロセスの多くは、例えば、順番に挿入されている:列からデータベースへの行の割合を取得する方法

PROCESSID | KIND 
1   | 1 
2   | 1 
3   | 1 
4   | 1 
5   | 2 
6   | 3 

今日で私のクエリは、ID順の行を取得しますが、何千ものがある場合、上記の例のような状況を想像してみて同じ種類の「1」が連続していると、それは私の問題です。

たとえば、10%が「1」、20%が「2」、50%が「3」の500行を取得します。

希望の結果は、データベース内の種類の割合ではなくPROCESSIDです。

これをSQL ServerとOracleに行うにはどうすればよいですか?

+1

あなたは割合を_know_しますか(そうゴードンの答えが働く場合があります)か、_expected percentages_で結果をしたいですか?後者は非常に難しいようですが、20%が失われるのは何ですか? –

+0

希望する出力は何ですか? – mathguy

+0

@RenéVogt私はその割合に基づいて結果を取りたいと思っています。私は500行、種類 "1"(50)、20%種類 "2"(100)などの10%を望む...これはもっと多くの種類とパーセンテージがある例です。 –

答えて

2

あなたは、ウィンドウ/分析関数を使用してSQL ServerとOracleでこれを行うことができます。

select kind, count(*) as numvals, 
     count(*) * 1.0/sum(count(*)) over() as proportion 
from t 
group by kind; 
+0

私の望む結果は、データベース内の種類の割合ではなくPROCESSIDです。 @OnlyaCuriousMind。 –

+0

。 。わかりません。質問を編集し、希望の結果を含める必要があります。 –

+0

私はすでにそれをしています。ごめんなさい。 –

関連する問題