Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Марта 23, 2019, 11:20:00 am

Автор Тема: Средний чек с определенным товаром  (Прочитано 357 раз)

Оффлайн Ивушка

  • Новичок
  • *
  • Сообщений: 5
  • Страна: ru
  • Рейтинг: +0/-0
    • Просмотр профиля
Средний чек с определенным товаром
« : Марта 06, 2019, 11:08:59 am »
Доброго дня!
Наверняка моя задача тривиальна, но не могу найти решение не просторах инета, а у самой не хватает опыта.
Задача такая.
Есть чеки с товарами, по ним считаются продажи, средний чек и среднее кол-во товаров (без повторений) в чеке. Если в выборке не указан товар, средний чек считается хорошо: [Продажи]/[Кол-во чеков]. Если отобрать какой-либо товар, то [Средний чек]=[Продажи только этого товара]/[Кол-во чеков с этим товаром]. Но это неверный подсчет! Логика должна быть такая: отобрать все чеки, содержащие выбранный товар, со всеми товарами в чеке и считать: [Общие продажи по отобранным чекам]/[Кол-во чеков с товаром]. Такая же проблема с подсчетом среднего кол-ва товаров в чеке.
На примере:

Чек 1:
Водка - 1 шт - 300 р
Пиво - 2 шт - 200 р
Сигареты - 1 шт - 100 р

Чек 2:
Пиво - 1 шт - 100 р

Чек 3:
Водка - 2 шт - 600 р

Отбираем товар "Пиво". QlikView выхватывает эту позицию и выдает:
Средний чек = (200+100)/2=150 р
Среднее кол-во товаров в чеке = (1+1)/2=1

Но должен отобрать полностью два чека с товаром "Пиво" и считать по ним, т.е.:
Средний чек = (300+200+100+100)/2=350 р
Среднее кол-во товаров в чеке = (3+1)/2=2

Как заставить его это сделать? ))
Ориентируюсь по ключевым полям "Код чека", "Товар", "Сумма по строке чека".
Если сбросить измерение по товару, то сбрасывает его совсем и берет вообще все чеки:

=sum({ <Товар=, [Дата] ={'>=$(vDat21)<=$(vDat22)'} >} [Сумма по строке чека])/
count( DISTINCT {<[Дата] ={'>=$(vDat21)<=$(vDat22)'}>} [Код чека])

 но нужно ведь оставить чеки, отобранные по измерению "товар"! (в количестве чеков измерение не сбрасываю, так и должно считаться - кол-во чеков с товаром). Как тут применить коды чеков, отобранных по товару, соображения не хватает.
Такая же беда с подсчетом товаров в чеке - при выборе товара оставляет только его. Исходная формула у меня такая (агрегирование, чтобы посчитать сперва кол-во в каждом чеке товаров без повторения):

=sum(aggr(count( DISTINCT
{< [Дата] ={'>=$(vDat21)<=$(vDat22)'}>} [Товар]), [Код чека])
)/count( DISTINCT {<[Дата] ={'>=$(vDat21)<=$(vDat22)'}>} [Код чека])


Помогите пожалуйста!

Оффлайн millik

  • Наставник
  • **
  • Сообщений: 90
  • Страна: by
  • Рейтинг: +37/-0
    • Просмотр профиля
Re: Средний чек с определенным товаром
« Ответ #1 : Марта 06, 2019, 04:15:43 pm »
Начали вы правильно. Нужно сбросить отбор по товаром, а для того, чтобы остались только чеки, которые попадают в выборку, нужно так же переопределить множество чеков.
По итогу нужно сделать так:
{<[Товар]=,[Код чека]=P([Код чека])>}

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1274
  • Страна: ru
  • Рейтинг: +136/-0
    • Просмотр профиля
Re: Средний чек с определенным товаром
« Ответ #2 : Марта 06, 2019, 08:28:21 pm »
Да, здесь необходимо использовать работу с множествами p().

Неофициальный форум пользователей QlikView & Qlik Sense

Re: Средний чек с определенным товаром
« Ответ #2 : Марта 06, 2019, 08:28:21 pm »

Оффлайн Ивушка

  • Новичок
  • *
  • Сообщений: 5
  • Страна: ru
  • Рейтинг: +0/-0
    • Просмотр профиля
Re: Средний чек с определенным товаром
« Ответ #3 : Марта 07, 2019, 12:20:48 pm »
Всем спасибо за подсказки, с функцией Р() все получилось!

Неофициальный форум пользователей QlikView & Qlik Sense

Re: Средний чек с определенным товаром
« Ответ #3 : Марта 07, 2019, 12:20:48 pm »