接下来是我之前关于在数据集中查找不断增加的子序列的问题。
Finding out the increasing subsequence in sql
获得结果
x | y
-----+-----
94 | 985
469 | 865
525 | 842
610 | 587
765 | 579
来自
x | y
-----+-----
94 | 985
73 | 940
469 | 865
115 | 864
366 | 862
525 | 842
448 | 837
318 | 832
507 | 826
244 | 758
217 | 741
207 | 732
54 | 688
426 | 605
108 | 604
610 | 587
142 | 581
765 | 579
102 | 572
我可以应用查询
select x, y
from (select max(x) over (order by y desc) as x_max, x, max(y) over (order by x desc) as y_max, y
from table
order by y desc, x desc) t
where t.x = t.x_max and t.y = t.y_max
order by y desc, x
现在我的问题是,如何执行此操作n次,即找到x的第2,第3,......,第n个增加的子序列。 我知道一般的想法是从原始表中获取第一个操作的结果,并对剩余的点执行查询。
所以在我的例子中,在第一次操作之后,我们有剩余的点,
x | y
-----+-----
73 | 940
115 | 864
366 | 862
448 | 837
318 | 832
507 | 826
244 | 758
217 | 741
207 | 732
54 | 688
426 | 605
108 | 604
142 | 581
102 | 572
再次应用查询,我们得到
x | y
-----+-----
73 | 940
115 | 864
366 | 862
448 | 837
507 | 826
并在
上执行操作 x | y
-----+-----
318 | 832
244 | 758
217 | 741
207 | 732
54 | 688
426 | 605
108 | 604
142 | 581
102 | 572
等等等等。我还想结合这些查询搜索的所有要点,并按y desc命令它们,即
x | y
-----+-----
73 | 940
94 | 985
115 | 864
366 | 862
448 | 837
469 | 865
507 | 826
525 | 842
610 | 587
765 | 579
答案 0 :(得分:0)
这不是一件轻而易举的事。远非最优,但你确实可以用递归CTE做到这一点:
RequestBody requestFile = RequestBody.create(MediaType.parse("image*/"), file);
String descriptionString = "en-US";
RequestBody description = RequestBody.create(MediaType.parse("multipart/form-data"), descriptionString);
apiInterface.uploadPhoto("CloudSight key",description, requestFile);
In retrofit api call:
@Multipart
@POST("https://api.cloudsightapi.com/image_requests")
Call<FileUploadResponse> uploadPhoto(
@Header("Authorization") String authorisation,
@Part("image_request[locale]") RequestBody description,
@Part("image_request[image]\"; filename=\"file.jpg\" " ) RequestBody file);