如何根据 Oracle/sql 中的两列进行分区

How to partition based on two columns in Oracle/sql

请帮我解决以下问题

问题:

+------+----------+
| Name | Sub-name |
+------+----------+
| A    | x        |
| A    | x        |
| B    | x        |
| A    | y        |
| B    | y        |
+------+----------+

期望的结果:

+------+----------+-------+
| Name | Sub-name | Count |
+------+----------+-------+
| A    | x        |     2 |
| A    | x        |     2 |
| B    | x        |     1 |
| A    | y        |     1 |
| B    | y        |     1 |
+------+----------+-------+

三列名称、子名称、计数

我想根据名称和子名称进行分区。

SQL Fiddle

Oracle 11g R2 架构设置:

CREATE TABLE test ( Name, "Sub-name" ) AS
          SELECT 'A', 'x' FROM DUAL
UNION ALL SELECT 'A', 'x' FROM DUAL
UNION ALL SELECT 'B', 'x' FROM DUAL
UNION ALL SELECT 'A', 'y' FROM DUAL
UNION ALL SELECT 'B', 'y' FROM DUAL;

查询 1:

SELECT Name,
       "Sub-name",
       COUNT( 1 ) OVER ( PARTITION BY "Sub-name", Name ) AS "Count"
FROM   test

Results:

| NAME | Sub-name | Count |
|------|----------|-------|
|    A |        x |     2 |
|    A |        x |     2 |
|    B |        x |     1 |
|    A |        y |     1 |
|    B |        y |     1 |

试试这个:

select name, sub_name, count(name) over (partition by name, sub_name) as count from table

select ra.Name,ra.sub-姓名,ta.count 来自 table ra 内部联接 (select 姓名、子名、人数(*) 来自 table 按名称分组,子名称)ta 在 ra.Name=ta.Name 在 ra.sub-名称=ta.sub-名称 按子名称 desc

排序

我真的不明白为什么我们需要为此使用分区 solution.Even 上面的连接查询工作正常...希望它应该...