2012-03-18 61 views
0

我使用PostgreSQL 9.1.13PostgreSQL - 订单通过使用数组。我可以动态创建数组吗?

以下是我迄今所做的:

/* 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个查询)

是否有可能做到这一点?

感谢

回答

3

如果我理解正确你的目标是基于某些值出现的频率你的结果进行排序。这很容易完成与window functions

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; 
+0

谢谢埃尔克,你的查询确实是我需要的。 – 2012-03-18 15:25:59