Как я могу получить COUNT значения поля, а также «% от общего» этого же значения из остальных значений в этом поле в одном запросе? - PullRequest
0 голосов
/ 26 марта 2020

Пример пояснения вопроса в заголовке:

имя_таблицы: фрукты

| fruit_type | <- заголовок столбца </p>

| apple |

| apple |

| orange |

| orange |

По сути, Я хочу, чтобы самый простой запрос возвратил COUNT апельсинов в этом столбце (который равен 2), а также отдельный столбец% апельсинов к общим типам фруктов (который составляет 50%).

В частности, я застрял не только в объединении двух необходимых требований в одном запросе, но и в том, как получить вторую часть (%) в целом.

1 Ответ

0 голосов
/ 26 марта 2020

Вы бы использовали оконные функции:

select fruit_type, count(*), count(*) * 1.0 / sum(count(*)) over ()
from fruit
group by fruit_type;

Возвращает значение для всех фруктов, а не только для апельсинов.

Если вы хотите просто апельсины, используйте условное агрегирование:

select avg(case when fruit_type = 'orange' then 1.0 else 0 end)
from fruit;
...