oracle PARTITION BY 的使用我有一个表,里面记录的是某公司的业务情况.有,日期(1,2,3月),大区(亚洲,欧洲,美洲),小区(亚洲有,中国,日本,韩国;欧洲有,英国,法国,德国;美洲有,美国,加拿大,
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 08:27:19
oracle PARTITION BY 的使用我有一个表,里面记录的是某公司的业务情况.有,日期(1,2,3月),大区(亚洲,欧洲,美洲),小区(亚洲有,中国,日本,韩国;欧洲有,英国,法国,德国;美洲有,美国,加拿大,
oracle PARTITION BY 的使用
我有一个表,里面记录的是某公司的业务情况.有,日期(1,2,3月),大区(亚洲,欧洲,美洲),小区(亚洲有,中国,日本,韩国;欧洲有,英国,法国,德国;美洲有,美国,加拿大,墨西哥),业务种类(业务一.业务二,业务三),以及具体收入.现在要求用 PARTITION BY 选出每个月收入最多的大区~~~
谢谢高手多帮助啊啊啊~~~
oracle PARTITION BY 的使用我有一个表,里面记录的是某公司的业务情况.有,日期(1,2,3月),大区(亚洲,欧洲,美洲),小区(亚洲有,中国,日本,韩国;欧洲有,英国,法国,德国;美洲有,美国,加拿大,
create table test_ta(year number,month number,area varchar2(20),region varchar2(20),business varchar2(20),income number);
select *
from (select year,
month,
area,
dense_rank() over(partition by year,month order by income desc) rank
from (select t.year,t.month,t.area,sum(income) income
from test_ta t
group by t.year,t.month,t.area))
where rank = 1
-- 最内层子查询:统计每个月份,每个大区的总收入
-- 第二层子查询:对每个月份,每个大区进行分组,按照总收入倒序排序,给出序号(此处同一月份总收入相同的,序号相同,看你自己的需求,看是取一条还是都取,取一条,则把dense_rank()替换成row_number())
-- 最外层查询:查询排序序号为1的记录,即每月总收入最多的大区