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

这返回:

在此处输入图像描述 但我还需要一个名为类型客户的第三列

>

我必须找出这个收入与所有其他客户相比有多好

  • 前 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 回答