Агрегирование дат на Presto

У меня есть таблица со списком продуктов, продаваемых каждый день, и я хотел бы знать, когда у нас был 95-й процентиль продаж (для данного продукта). Я не смотрю на средние значения, так как бывают дни, когда продажи высоки (и это может исказить цифры)

Вот запрос, который я пытаюсь запустить на presto

select approx_percentile(count(date), .95) 
from logs 
where vendor='abc' 
  and product='biscuit' 
  and date >= date_parse(date_format(now() - interval '30' day, '%Y-%m-%d'), '%Y-%m-%d');

Но presto, похоже, не нравится, и выдает следующее сообщение об ошибке

Ошибка запроса: неожиданные параметры (дата, двойное значение) для функции приблизительно_перцентиль. Ожидаемые: ок. Процентиль (bigint, double), ок. Процентиль (bigint, bigint, double), ок. Процентиль (double, double), ок. Процентиль (double, bigint, double)

PS: дата типа "дата"


person Pradeep BS    schedule 10.09.2016    source источник
comment
У каждой продажи есть отметка времени, которая включает дату, так что это мой лучший способ получить статистику.   -  person Pradeep BS    schedule 10.09.2016
comment
Можете ли вы указать имя своего столбца, чтобы он предоставил вам запрос   -  person Jim Macaulay    schedule 10.09.2016
comment
Привет, @JimMacaulay, на каждой распродаже будет указана дата, продавец, товар и цена. Итак, дата - это то, что является общим для каждой транзакции.   -  person Pradeep BS    schedule 10.09.2016
comment
Я думаю, вам нужно разделить даты подсчета во вложенном запросе, а затем использовать его в approx_percentile(cnt, .95);).   -  person shA.t    schedule 10.09.2016


Ответы (1)


select product,date,count(sale) from logs where vendor='abc' and product = 'biscuit' group by product,date order by count(sale) desc;

Этот запрос предоставит вам все подробности с максимальной продажей вверху.

person Jim Macaulay    schedule 10.09.2016