У меня есть таблица PostgreSQL, аналогичная следующей таблице, в которой содержится информация об обратной связи для статей на веб-сайте. Я хочу иметь возможность выполнить запрос, чтобы получить общее количество ответов и процент, при котором was_useful истинно.
Я попытался выполнить следующее, основываясь на том, что я смог найти в Интернете, но он просто говорит 100% результатов оказались полезными.
SELECT p.foreign_key_id,
count(p.foreign_key_id) AS total_responses,
count(CASE WHEN p.was_useful=true THEN 1 ELSE 0 END) / count(p.foreign_key_id) AS percentage_useful
FROM
table_name p
GROUP BY
p.foreign_key_id;
Пример таблицы:
| id | foreign_key_id | was_useful |
|----|----------------|------------|
| 1 | 1 | true |
| 2 | 1 | false |
| 3 | 1 | true |
| 4 | 1 | false |
| 5 | 2 | false |
| 6 | 2 | false |
| 7 | 2 | false |
| 8 | 2 | true |
| 9 | 3 | false |
| 10 | 3 | false |
Текущий выход:
| foreign_key_id | total_responses | percentage_useful |
|----------------|-----------------|-------------------|
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 2 | 1 |
Желаемый результат:
| foreign_key_id | total_responses | percentage_useful |
|----------------|-----------------|-------------------|
| 1 | 4 | .5 |
| 2 | 4 | .25 |
| 3 | 2 | 0 |