Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查看一个值如何与其他值进行比较并划分为多个类别_Sql_Oracle Apex - Fatal编程技术网

Sql 查看一个值如何与其他值进行比较并划分为多个类别

Sql 查看一个值如何与其他值进行比较并划分为多个类别,sql,oracle-apex,Sql,Oracle Apex,我做了一个简单的查询,检查客户购买单打的金额: 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

我做了一个简单的查询,检查客户购买单打的金额:

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
这将返回:

但是我还需要一个名为type customer的第三列

>

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

  • 前25%=我必须返回“非常好”
  • 25%至50%=返回“良好”
  • 50%至75%=回报率“平均”
  • 75%至100%=“坏”
因此,我需要计算每个客户的收入,并查看其与客户的比较情况

我该怎么做? 当我正在构建一个oracle项目(apex)时,如果PL/SQL更适合这个工作,我也可以使用它


thx:)

我认为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”意味着收入。

是的,omzet意味着收入。这给出了一个结果,但收入不是我数据库中的一列。收入是数字*价格的结果。我需要做什么改变才能让它像那样工作?已经谢谢你了!:)我不明白你的问题。with子句进行计算,然后由查询的其余部分使用。