Postgresql количество делится на количество - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь получить показатель успешных продаж по месяцам в городе, если Майами. У меня есть следующие переменные: идентификатор звонка, дата звонка, город и статус звонка (продажа или не продажа). У меня 0 в столбце успешности, это ошибка синтаксиса или типа данных? Код написан с использованием PostgreSQL.

select date_trunc('month', call_date)::DATE as date,
       count(c.id) FILTER (WHERE c.status='sale') as success_cnt,
       count(c.id) as all_cnt,
       sum((count(c.id) FILTER (WHERE c.status='sale)'))/count(c.id)) over() as success_rate
       from user.call as c
where city='Miami')
group by 1;

Ответы [ 2 ]

2 голосов
/ 18 марта 2020

Я немного запутался, когда приходят оконные функции. Для успеха вы можете использовать:

select date_trunc('month', call_date)::date as date,
       count(*) FILTER (where c.status = 'sale') as success_cnt,
       count(*) as all_cnt,
       avg( (c.status = 'sale')::int ) as success_rate
from user.call c
where city = 'Miami'
group by 1;
0 голосов
/ 19 марта 2020

count() возвращает целое число, а когда вы делите целые числа, вы получаете целочисленный результат, а остаток отбрасывается. Если вы хотите получить дробный результат, вам нужно привести один из входных данных к дробному типу перед делением.

...