-1

我有下表和数据以及我的规则的预期输出

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

规则:

  1. 显示id, loc1, loc2, percentage百分比大于零的位置。
  2. 删除列中的任何冗余数据,loc2以便删除百分比值较低的行。
  3. percentage asc根据列 loc1对数据进行排序和分组。
4

1 回答 1

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 |
+----+------+------+------------+
于 2012-12-04T06:28:22.283 回答