请帮我解决以下问题
问题:
+------+----------+ | 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 | +------+----------+-------+
三列名称,子名称,计数
我想根据名称和子名称进行分区。
答案 0 :(得分:5)
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 |
答案 1 :(得分:1)
试试这个:
选择name,sub_name,count(name)over(partition by name,sub_name)作为表中的计数
答案 2 :(得分:0)
从表ra中选择ra.Name,ra.sub-name,ta.count 内部联接 (从表中选择名称,子名称,计数(*) 按名称分组,子名称ta 在ra.Name = ta.Name上 在ra.sub-name = ta.sub-name上 按子名desc排序
真的我不明白为什么我们需要为这个解决方案使用分区。即使上面的连接查询工作正常......希望它应该....