Я новичок в 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
Как агрегировать частоту каждой категории?