Нужно рассчитать Нет времени посетителя магазина - PullRequest
0 голосов
/ 26 марта 2020

Мне нужно рассчитать количество посещений покупателя в магазине. Вместе с купленным предметом. В этом случае покупатель посещает магазин 3 раза и приобретает 5 единиц товара. Теперь, когда я подсчитываю количество посещений, мой результат равен 5.

Ниже приведен запрос, который я пробовал:

select 
    Receipt_no,
    Customer,sales_item,
    Amount,
    sum(Amount) over (partition by customer) as total_sales,
    count(Receipt_No) over (partition by customer) as No_of_Visit 
from sales
left join customer where sales.Customer = customer.Customer

И мой результат равен

Receipt_No  Customer  sales_item  Amount  total_sales  No_of_Visit
5           C1        Item1       100     1200         5
5           C1        Item3       200     1200         5
5           C1        item4       200     1200         5
34          C1        item1       300     1200         5
35          C1        item2       400     1200         5

но я хочу No_of_Visit как "3"

1 Ответ

1 голос
/ 26 марта 2020

Я думаю, вы хотите чёткое количество чеков. Это могло бы быть:

count(distinct receipt_no) over (partition by customer) as No_of_Visit

Но, к сожалению SQL Сервер не поддерживает distinct в оконных функциях. Однако вы можете эмулировать его с помощью dense_rank():

dense_rank() over (partition by customer order by receipt_no) 
    + dense_rank() over (partition by customer order by receipt_no desc) 
    - 1 as No_of_Visit
...