0

顧客がシングルを購入した金額を確認する簡単なクエリを作成しました。

SELECT k.voornaam || ' ' || k.familienaam as "Naam", sum( b.aantal * s.prijs) as "Omzet"  

from bestellingen b 
left join klanten k on k.klantid = b.klantid
left join singles s on s.singleid = b.singleid
where b.klantid = 12
group by k.voornaam,k.familienaam

これは戻ります:

ここに画像の説明を入力してください しかし、typecustomerという名前の3番目の列も必要です

>>

私はこの収入が他のすべての顧客と比較してどれほど良いかを見つけなければなりません

  • 上位25%=「非常に良い」を返さなければなりません
  • 25〜50%=「良い」を返す
  • 50〜75%=「平均」を返す
  • 75%から100%='悪い'

したがって、各顧客の収益を計算し、それが顧客とどのように比較されるかを確認する必要があります。

どうすればこれを行うことができますか?oracleプロジェクト(apex)を構築しているので、これがこのジョブにより適している場合は、PL/SQLを使用することもできます。

どうも :)

4

1 に答える 1

1

Oracle Apex には Oracle の基盤となる機能があると思います。これは、パーセンタイル分析関数を使用して行うことができます。

with t as (
     SELECT k.voornaam || ' ' || k.familienaam as "Naam",
            sum( b.aantal * s.prijs) as "Omzet"
     from bestellingen b left join
          klanten k
          on k.klantid = b.klantid left join
          singles s
          on s.singleid = b.singleid
     where b.klantid = 12
     group by k.voornaam,k.familienaam 
    )
 select t.*,
        (case when percentile between 0 and 0.25 then 'VeryGood'
              when percentile between 0.25 and 0.5 then 'Good'
              when percentile between 0.5 and 0.75 then 'Average'
              else 'Bad'
         end) as CustGrp
 from (select t.*,
              percent_rank() over (order by omzet desc) as percentile
       from t
      ) t

「omzet」は収入を意味すると思います。

于 2012-08-15T14:21:16.533 に答える