【发布时间】:2018-09-23 13:56:29
【问题描述】:
我有一个如下所示的数据集:
| path |
|----------------- |
| {16,13} |
| {16,85} |
| {16,85,1} |
| {16,85,2} |
| {16,85,15} |
| {16,85,80} |
| {16,85,80,1} |
| {16,85,80,63} |
| {16,85,80,63,1} |
路径列表示通过图的一种层次路径,从某个节点到另一个节点。我试图将每条路径折叠成从根节点到叶节点的最长路径 - 应该注意元素的顺序很重要({1, 2, 3}!= {3, 2, 1})。
举个例子:
- 路径
{16, 13}是包含 16 和 13 的最长路径按此顺序,所以它保持不变。 - 路径
{16, 85}不是最长的,因为包含这些元素按该顺序 的路径更长,即{16, 85, 2}。因此,{16, 85}所在的行应从结果集中丢弃,{16, 85, 2}应保留,因为它恰好是最长的。 - 等。每隔一行
所以结果集看起来像:
| path |
|----------------- |
| {16,13} |
| {16,85,1} |
| {16,85,2} |
| {16,85,15} |
| {16,85,80,1} |
| {16,85,80,63,1} |
我什至不确定从哪里开始,我尝试过的一切都失败了。
我发现有一个叫做数组包含运算符@>的东西,但不知道如何应用它。
这样做有合理的查询吗?任何帮助都会很棒。谢谢!
【问题讨论】:
标签: sql arrays postgresql aggregate subset