カラムCMDNAME、TIME、およびFAILEDのテーブルがあります。同じCMDNAME値を持つ行がいくつかあります。 TIME列は、トランザクションの単なるタイムスタンプです。 FAILED列は、「Y」または「N」のいずれかです。カラムが特定の値と等しいグループ内のローをカウントするSQL
CMDNAMEの各別個の値に対して、FAILED = 'Y'の行の割合(同じCMDNAME値の場合)の合計行数になるようにします。
私は一種の近くに、以下で入手することができます
select CMDNAME, FAILED, count(*) groupCount from TABLE group by CMDNAME, FAILED
「N」で1カウントと「Y」カウントが1、私はそれぞれの固有のcmdNameという値のための2つの行を与えること。より直接的に計算する方法がわからない場合は、中間計算を使用してこれを使用することができます。
どちらの答えは罰金です:あなたは、このプロパティを使用してのみ
failed='Y'
行をレポートcase
式を数えることができます。 :)私のための主要な理解は "カウント(ケース...)"表記でした。 –最初のバージョンは2番目のバージョンと比較して非常に非効率的です(なぜ、入力行ごとに1行の出力を作成し、結果にselect ** distinct **を使用するのですか?どちらの場合も、1.0 *は不要です。残念ながら、Oracleは整数算術を「知っていません」ので、浮動小数点計算を探している必要はありません。これらはOracleだけのものです。 – mathguy