2016-05-31 4 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 я 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; 

Это считается различных кл ients в день и всего строк для client_types 'P' и 'F'. Не определено, как вы хотите подсчитать несколько типов для одного и того же клиента (или это даже возможно).

О агрегатного FILTER:

crosstab() может сделать это быстрее, но это довольно неясно, что именно вы хотите.
О crosstab():

Смежные вопросы