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%=“坏”
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子句进行计算,然后由查询的其余部分使用。