【问题标题】:SQL analytical function: rank() over partition by not working propertySQL 分析函数:rank() over partition by not working property
【发布时间】:2015-03-24 20:38:32
【问题描述】:
CREATE TABLE customers
( customer_id number(10) not null,
  customer_name varchar2(50) not null
);

INSERT INTO customers VALUES(22,'W');
INSERT INTO customers VALUES(22,'W');
INSERT INTO customers VALUES(20,'Q');
INSERT INTO customers VALUES(20,'Q');
COMMIT;

现在我正在尝试按客户名称获取与我的分区相对应的不同等级

SELECT DENSE_RANK() OVER(PARTITION BY customer_name ORDER BY CUSTOMER_ID) , CUSTOMER_ID FROM CUSTOMERS;

输出:

1   20
1   20
1   22
1   22

预期输出:

1   20
1   20
2   22
2   22

【问题讨论】:

    标签: oracle11g partition-by oracle-analytics


    【解决方案1】:

    使用下面的查询

    SELECT 
    DENSE_RANK() OVER(ORDER BY CUSTOMER_ID) , 
    CUSTOMER_ID 
    FROM CUSTOMERS;
    

    删除 partition BY by 子句,因为如果您使用 partition by 子句,它将根据名称划分结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2016-05-14
      • 2021-12-15
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多