如何根据 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 |
+------+----------+-------+
三列名称、子名称、计数
我想根据名称和子名称进行分区。
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
| 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 上面的连接查询工作正常...希望它应该...
请帮我解决以下问题
问题:
+------+----------+ | 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 | +------+----------+-------+
三列名称、子名称、计数
我想根据名称和子名称进行分区。
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
| 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 上面的连接查询工作正常...希望它应该...