我想为 col1 中的每个唯一值按升序分配 col2 的唯一值。
数据
这将始终为 n^n,其中 n 是可分配给 col1 唯一值的值的数量
-------------
| col1 | col2 |
|------|------|
| a | 1|
| a | 2|
| a | 3|
| b | 1|
| b | 2|
| b | 3|
| c | 1|
| c | 2|
| c | 3|
---------------
在第一个循环中,我想将“a”分配给第一个可用值“1”。因为 'a' 有一个值,所以 {a: 2} 和 {a: 3} 被删除。并且由于分配了“1”,{b: 1} 和 {c: 1} 被删除。
所以最后的预期结果
-------------
| col1 | col2 |
|------|------|
| a | 1|
| b | 2|
| c | 3|
---------------
我的测试
第一个查询可能是SELECT DISTINCT ON (col1) * FROM ... ORDER BY col1 ASC
,但结果是:
-------------
| col1 | col2 |
|------|------|
| a | 1|
| b | 1|
| c | 1|
---------------
所以我想执行这样的事情:
SELECT DISTINCT ON (col1) AND DISTINCT ON (col2) *
FROM ...
ORDER BY col1, col2 ASC
第一次DISTINCT
执行:
-------------
| col1 | col2 |
|------|------|
| a | 1|
| b | 1|
| b | 2|
| b | 3|
| c | 1|
| c | 2|
| c | 3|
---------------
第二个:
-------------
| col1 | col2 |
|------|------|
| a | 1|
| b | 2|
| b | 3|
| c | 2|
| c | 3|
---------------
您的样本数据看起来像是解决方案:
db<>在这里摆弄
不过,这确实是一个猜测,因为您的问题几乎没有定义。除其他外,这假设 in 中的每个不同值都
col1
与 in 中的同一组值组合col2
。