Czasami możesz chcieć obliczyć decyla na podstawie aktualności w MySQL. Np. aby uszeregować klientów na podstawie ostatnich zakupów lub zamówień zamiast na podstawie łącznej sprzedaży.
Oblicz Decile z ostatnich lat
Pomaga to tworzyć specjalne oferty dla osób, które niedawno kupiły coś w Twojej witrynie. Nie ma jeszcze do tego funkcji. Oto gotowe zapytanie, aby to zrobić.
Np. Masz stół zamówienia który zawiera wszystkie zamówienia produktów dla każdego użytkownika. Chcesz obliczyć decyla na podstawie ostatnich zamówień.
decyle+-----------+----------------+------------+----------- --------+| identyfikator_użytkownika | najnowszy | pozycja | decyl |+-----------+----------------+---------+------------ -------+| 1 | 2013-11-20 | 1 | 100 || 4 | 2013-11-11 | 2 | 66,67 || 3 | 2013-10-20 | 3 | 33,33 |+-----------+----------------+---------+--------- -------+
Oto zapytanie, którego możesz użyć do obliczenia decyla na podstawie aktualności w MySQL. Wystarczy zamienić kolumny – user_id, purchase_date i table – order. Pobiera najnowszą datę zakupu każdego użytkownika. Następnie klasyfikuje je według najpóźniejszej daty zakupu. Na koniec oblicza decyla na podstawie rangi.
wybierz identyfikator_użytkownika ,latest,rank,round(10*(cnt-rank+1)/cnt,0) jako decile z (SELECT user_id,latest,@curRank :=@curRank + 1 AS rankFROM (wybierz user_id ,max(data_zakupu ) najpóźniej z `zamówienia ` grupuj według identyfikator_użytkownika )p, (SELECT @curRank :=0) rORDER BY najnowszy opis ) jako dt,(select count(distinct user_id ) jako cnt z`zamówienie `) jako ct
Jeśli masz już ostatnią datę zakupu dla każdego użytkownika w tabeli i chcesz bezpośrednio użyć tabeli do obliczenia decyla z ostatnich zakupów, oto zapytanie