五分位ラベル (-1、1、2、3、4、5) で整理されたデータがあります。列内のこれらの値のそれぞれについて、Quintile
と呼ばれる別の列に値がありますret
。最後に、月末の日付を整数として含む日付の列があります。
私の目標は、インデックスのように機能する日付列のみを使用して、それぞれが独自の列として、すべての Quintile リターン データを同時に視覚化することです。
Quintile
基本的に、私はこのコラムにピボットしたいと考えておりIF
、これを達成する方法として MySQL でステートメントを使用することを勧めている他の場所を見てきました。
たとえば、データの 1 つの五分位数に相当するクエリを次に示します。
select yearmonth, ret
where Quintile=1
from quintile_returns
しかし、すべての五分位ラベルに対してこれを繰り返したり、データを個別に保存したり、Python Pandas や Excel などでつなぎ合わせたりしたくはありません。SQL に個別の列として表示させたい。
しかし、このIF
ステートメント スタイルの貧しい人のピボットを試すとき、これは私が使用するクエリです。
select yearmonth,
IF(Quintile=1, ret, NULL) as Q1_ret,
IF(Quintile=2, ret, NULL) as Q2_ret
from quintile_returns
基本的に、有効なデータの対角線が返されます。五分位数が 1 ではないすべての行は引き続き表示され、NULL が入力されます。次に、五分位数 2 についても同様です。
これらの余分な NULL 値をすべて回避するにはどうすればよいですか? 基本的に、条件が満たされた場合にのみ列の値を返すようにSQLに指示し、 NULLなどをデフォルトのelse
ようなプレースホルダーとして使用しないようにします。
ネストされた結合型ステートメントを含まないこれを行う方法はありますか?