2013-07-17 2 views
1

Я новичок в PostgreSQL и хотел бы произвести некоторые сводные данные из нашей таблицыПростой подсчет PSQL запрос

У нас есть простая доска - имя таблицы messages, которая имеет элемент ctg_uid. Каждый ctg_uid соответствует названию категории в таблице categories.

Вот категории select * from categories ORDER by ctg_uid ASC;

ctg_uid | ctg_category | ctg_creator_uid 
---------+--------------------+----------------- 
     1 | general   |    1 
     2 | faults    |    1 
     3 | computing   |    1 
     4 | teaching   |    2 
     5 | QIS-FEEDBACK  |    3 
     6 | QIS-PHYS-FEEDBACK |    3 
     7 | SOP-?-CHANGE  |    3 
     8 | agenda items  |    7 
     10 | Acq & Process  |    2 
     12 | physics-jobs  |    3 
     13 | Tech meeting items |    12 
     16 | incident-forms  |    3 
     17 | ERRORS    |    3 
     19 | Files    |    10 
     21 | QIS-CAR   |    3 
     22 | doses    |    4 
     24 | admin    |    3 
     25 | audit    |    3 
     26 | For Sale   |    4 
     31 | URGENT-REPORTS  |    4 
     34 | dt-jobs   |    3 
     35 | JOBS    |    3 
     36 | IN-PATIENTS  |    4 
     37 | Ordering   |    4 
     38 | dep-meetings  |    4 
     39 | reporting   |    4 

То, что я хотел бы сделать, это для всех сообщений на нашем messages является подсчитывают частоту каждой категории

я могу сделать это на категории по категориям основе SELECT count(msg_ctg_uid) FROM messages where msg_ctg_uid='13';

Однако возможно ли это сделать в одном вкладыше?

Следующая дает категорию и ctg_uid для каждого сообщения SELECT ctg_category, msg_ctg_uid FROM messages INNER JOIN categories ON (ctg_uid = msg_ctg_uid);

но SELECT ctg_category, count(msg_ctg_uid) FROM messages INNER JOIN categories ON (ctg_uid = msg_ctg_uid);

дает мне ошибку ERROR: column "categories.ctg_category" must appear in the GROUP BY clause or be used in an aggregate function

Как агрегировать частоту каждой категории?

ответ

1

Вы пропустили группу по статье:

SELECT ctg_category, count(msg_ctg_uid) 
FROM messages INNER JOIN categories ON (ctg_uid = msg_ctg_uid); 
GROUP BY ctg_category 

это означает, что вы хотите, количество за ctg_category

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