特殊订购与CASE声明 - 需要指导

pkr*_*cer 3 sql postgresql case sql-order-by

我正在考虑如何编写此查询.我认为它可能涉及在ORDER BY声明中使用CASE,但我可以使用一些指导.

我有两列数据; 身份证和价格.当我订购价格ASC时,我的查询结果显示如下:

ID | 价格
3 | 150
1 | 200
3 | 205
2 | 210
2 | 230
3 | 270
1 | 300
2 | 340
3 | 500

我要做的是仍然按价格ASC订购,但略有不同.我也希望按ID进行分组.例如,我希望查询找到所有结果的最低价格,然后查找具有相同ID的所有其他记录,在ASC订单价格中列出.找到该ID的所有记录后,查询将查找所有其他剩余记录,再次找到最低价格,然后重复.因此,每次通过此循环时,结果池都会减少.对于上面的示例,结果将是:

ID | 价格
3 | 150
3 | 205
3 | 270
3 | 500
1 | 200
1 | 300
2 | 210
2 | 230
2 | 340

循环就像找到最低价格,找到具有相同ID的所有记录并按价格顺序列出,找到剩余结果的最低价格,查找具有相同ID的所有记录并按价格顺序列出,重复....

有任何想法吗?如果我没有充分解释,请告诉我.

Amy*_*y B 5

SELECT ID, PRICE
FROM t
ORDER BY MIN(PRICE) OVER (PARTITION BY ID), PRICE
Run Code Online (Sandbox Code Playgroud)

SQL小提琴