我有以下表格和数据以及我的规则的预期输出
drop table test_new
create table test_new (id number(9), loc1 number(9), loc2 number(9), percentage number(9));
insert into test_new values (1,1,2,0);
insert into test_new values(2,1,3,10);
insert into test_new values(3,1,4,5);
insert into test_new values(4,1,5,45);
insert into test_new values(5,2,3,0);
insert into test_new values(6,2,4,90);
insert into test_new values(7,2,5,0);
insert into test_new values(8,3,4,0);
insert into test_new values(9,3,5,0);
insert into test_new values(10,4,5,40);
insert into test_new values(11,7,5,0);
insert into test_new values(12,9,4,0);
insert into test_new values(13,10,5,90);
insert into test_new values(14,11,5,70);
insert into test_new values(15,1,15,45);
需要此表单查询显示
id loc1 loc2 percentage
15 1 15 45
2 1 3 10
6 2 4 90
13 10 5 90
不是这个
id loc1 loc2 percentage
2 1 3 10
15 1 15 45
6 2 4 90
13 10 5 90
规则:
id, loc1, loc2, percentage
,其中百分比大于零。loc2
中的所有数据冗余,以便删除具有较低百分比值的行。percentage asc
对数据进行排序,并将其基于列loc1进行分组。答案 0 :(得分:0)
试一试。
select t1.* from test_new t1
left join test_new t2
on t1.loc2 = t2.loc2 and t1.percentage < t2.percentage
where t1.percentage > 0 and t2.loc2 is null
order by t1.percentage
但是,我认为根据您的评论(而不是您的结果表,这似乎是错误的),这是您所期望的:
+----+------+------+------------+
| ID | LOC1 | LOC2 | PERCENTAGE |
+----+------+------+------------+
| 2 | 1 | 3 | 10 |
| 15 | 1 | 15 | 45 |
| 6 | 2 | 4 | 90 |
| 13 | 10 | 5 | 90 |
+----+------+------+------------+