2017-06-11 3 views
1

私はeventsと呼ばれるテーブルを5000のエントリで持っています。各グループのパーセンテージを計算する方法は?

各イベントには、ヌルまたはそうでない可能性のあるrecorded_onフィールドがあります。

各イベントには、artistフィールドもあります。これは10個の異なる値の1つです。

アーティストの名前を返す単一のクエリを発行し、そのイベントの何パーセントがnullを持つのはrecorded_onの値ですか?

ARTIST | PERCENTAGE RECORDED 
------------------------------ 
Joe | 49.2 
Sarah | 17.8 
Mike | 83.0 

答えて

0
select 
    artist, 
    (COUNT(
     CASE recorded_on 
      WHEN NULL THEN 1 
      ELSE NULL 
     END 
    )/COUNT(*)) * 100 as percentage 
from event group by artist 
+0

この確実右です: recorded_on IS NULLは、その結果10のいずれかであるboolean式ですか?私は常にそれを実行する上で私の間違いかもしれませんが、何があっても、数字として0を取得します。 – GreenTriangle

+0

は記録されていますフィールドはNull可能ですか? –

+0

です。そして、私は 'records_onがNULLであるところからCOUNT(*)FROMイベントを選択する 'ことができ、数字を返すことができます。 – GreenTriangle

0

のようにGROUP BYを使用して、グループ毎に一つの出力列を取得します。

SELECT artist, 
     100.0 * sum(recorded_on IS NULL)/count(*) AS "percentage recorded" 
FROM events 
GROUP BY artist; 
関連する問題