2017-01-23 20 views
0

私は顧客IDと顧客の支出を設定した顧客データを持っています。私は、顧客データを3つのグループに分ける必要があります(高い顧客、中間の消費者、低い消費者)。私はRANKとPartitioを使ってみましたが、私はグループの数を与えることができませんでした(3)。私がTeradataでこれを行うことができる他の方法はありますか? 顧客が9人いる場合は、最初にすべてを消費額で並べ替え、3つのグループに分け、各グループの顧客数を数えます(3)。また、各グループの下で費やされた金額の最小値と最大値を決定してください。 Cust A、B、Dは$ 4から$ 8の間で過ごしました。媒体の中にあります Custs C、E、Hは$ 1- $ 3の間で過ごしました。 #Custs(3,3,3); Min_Spend($ 9、$ 4、$ 1); MAX_SPEND($ 12 $ 8 $ 3)Teradataトップ中盤の顧客

答えて

1

ありクォンという名前の古い機能がありますが、あなたはより良い標準SQLに準拠し構文に置き換える:あなたは、

3 * (RANK() OVER (ORDER BY spend) - 1)/COUNT(*) OVER() AS Q 

これは、各グループに0〜2の間に番号を割り当てそれを派生テーブルに簡単にラップし、その上に集計を追加することができます。

+0

Dnoeth、これは完全に機能します。これにより、顧客グループと割当ランクが分割されます。私はこれを揮発性のテーブルにロードし、必要な集計を実行しました。どうもありがとうございました。これだけでなく、すべてのあなたのテラデータに対する回答が本当に役に立ちました。 – Ramya

+0

私は別の状況があります。基本的には、私は3つの製品グループのそれぞれの顧客を高額消費者、低および中高年消費者にランク付けする必要があります。グループ・バイ・ケースとケース・ステートメントを使用して、すべてを一度に実行しました。しかし、それぞれのランクの最小値と最大値のセールス(製品別にランク付けする必要があります)の値を引っ張ったとき、中間の最小値と最大値はすべての製品グループで同じでしたが、それらをすべて独立してランク付けします。これに関する情報は、 – Ramya

+1

@ user1806980と評価されています。おそらく 'OVER'と – dnoeth

関連する問題