sql - 如何根据计算获得百分位排名

标签 sql oracle

有四个表:

  1. T_SALES 有像

    这样的列
    CUST_KEY,
    ITEM_KEY,
    SALE_DATE,
    SALES_DLR_SALES_QTY,
    ORDER_QTY.
    
  2. T_CUST 有像

    这样的列
    CUST_KEY,
    CUST_NUM,
    PEER_GRP_ID
    
  3. T_PEER_GRP 有像

    这样的列
    PEER_GRP_ID,
    PEER_GRP_DESC,
    PRNT_PEER_GRP_ID
    
  4. T_PRNT_PEEER 有像

    这样的列
    PRNT_PEER_GRP_ID,
    PRNT_PEER_DESC
    

现在对于上面的表格,我需要根据父对等中对等组的计算 fillrate = SALES_QTY/ORDER_QTY * 100 生成客户的百分位排名。

有人可以帮忙吗?

最佳答案

您可以使用分析函数PERCENT_RANK() 来计算百分位排名,如下所示:

SELECT
    t_s.cust_key,
    t_c.cust_num,
    PERCENT_RANK() OVER (ORDER BY (t_s.SALES_DLR_SALES_QTY / ORDER_QTY) DESC) as pr
FROM t_sales t_s
INNER JOIN t_cust t_c ON t_s.cust_key = t_c.cust_key
ORDER BY pr;

引用:

PERCENT_RANK on Oracle® Database SQL Reference

关于sql - 如何根据计算获得百分位排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24529858/

相关文章:

sql - 从多个表中选择 count(*)

sql - Oracle中如何忽略字符串末尾的空值?

mysql - 选择时间戳 x 和时间戳 y 之间的数据,返回为 z 行数(缩小结果集)

sql - 在 sqoop 导出中,Avro 表在 RDBMS 中定义模式

sql - 如何在 SQL 中将两列追加到一列中?

java - 无法使用 OJDBC 和 Oracle DB 执行 SQL 查询(但可以完全使用 postgres JDBC 和 Postgres DB)

sql - Oracle SQL 中仅排除一个 MIN 值

MySQL 在 where 子句中使用带有子索引的严格模式

sql - Select into 语句,其中源是其他数据库

sql - Select 语句查找没有值的组