0

我正在使用 PostgreSQL 9.1.13

这是我到目前为止所做的:

/* First Array ==> SELECT raggruppamento FROM ok_filiali GROUP BY raggruppamento ORDER by count(raggruppamento) DESC */
/* Second Array ==> SELECT banker FROM ok_filiali GROUP BY banker ORDER by count(banker) DESC */

SELECT mandato, raggruppamento, banker
FROM ok_filiali
ORDER BY
idx(array['MI','FI','BS','RM','BO','TO','GE','*','PD','PR'], ok_filiali.raggruppamento), 
idx(array['120','MF','28','921','30','29','56','38','76','33', '27', '8037', '5038', '173', '5984', '45', '104', '46', 
    '84', '284', '176', '5311', '209', '248', '5138', '5064', '325', 
    '171', '348', '255', '274', '373', '5915', '318', '5076'], ok_filiali.banker)

现在我已经使用了上述查询并手动创建了 2 个数组。

我需要做的是动态创建用于Order By(直接使用2个查询)的2个数组

有可能这样做吗?

谢谢

4

1 回答 1

3

如果我理解正确,您的目标是根据某些值出现的频率对结果进行排序。使用窗口函数更容易完成

SELECT mandato, raggruppamento, banker, 
    COUNT(*) OVER (PARTITION BY raggruppamento) AS order1.
    COUNT(*) OVER (PARTITION BY banker) AS order2
FROM ok_filiali
ORDER BY order1 DESC, order2 DESC;
于 2012-03-18T15:16:36.017 回答