2016-05-31 62 views
0

交叉表函數返回的錯誤:交叉PostgreSQL中,算上

No function matches the given name and argument types

我在表客戶,日期和客戶的類型。
例子:

CLIENT_ID | DATE | CLI_TYPE 
    1234 | 201601 | F 
    1236 | 201602 | P 
    1234 | 201602 | F 
    1237 | 201601 | F 

我想按日期來獲得(不同)集團客戶的數量,再算上所有客戶端和客戶端類型進行排序(但類型:P I F放在行和計數客戶端,如果他們是P或F)

事情是這樣的:

DATE | COUNT_CLIENT | P | F 
201601 | 2   | 0 | 2 
201602 | 2   | 1 | 1 
+0

請出示你嘗試過什麼,也與你的Postgres的版本。理想情況下也是實際的表定義 - 完成具有數據類型和約束的「CREATE TABLE」語句。 –

回答

1
SELECT date 
    , count(DISTINCT client_id) AS count_client 
    , count(*) FILTER (WHERE cli_type = 'P') AS p 
    , count(*) FILTER (WHERE cli_type = 'F') AS f 
FROM clients 
GROUP BY date; 

這計數不同 CL每日客戶數,行,用於client_types'P'和'F'。這是不明確的,你想如何計算同一客戶端的多種類型(或者甚至可能)。

關於總FILTER

crosstab()可能使其更快,但你想要什麼是很清楚。
關於crosstab()