sql >> Databáze >  >> RDS >> Mysql

Vypočítejte decil z aktuálnosti v MySQL

Někdy možná budete chtít vypočítat decil z aktuálnosti v MySQL na základě. Např. seřadit zákazníky podle aktuálnosti nákupů nebo objednávek namísto celkového prodeje.

Vypočítat decil z aktuálnosti

To pomáhá vytvářet speciální nabídky pro lidi, kteří nedávno něco koupili na vašem webu. Zatím pro něj nejsou žádné funkce. Zde je připravený dotaz, jak to udělat.

Např. máte tabulku objednávky který obsahuje všechny objednávky produktů pro každého uživatele. Chcete vypočítat decil z aktuálnosti objednávek.

decily+-----------+----------------+----------+------- --------+| user_id | nejnovější | hodnost | decile |+-----------+----------------+---------+-------- -------+| 1 | 2013-11-20 | 1 | 100 || 4 | 2013-11-11 | 2 | 66,67 || 3 | 2013-10-20 | 3 | 33,33 |+-----------+----------------+---------+--------- -------+

Zde je dotaz, který můžete použít k výpočtu decilu z aktuálnosti v MySQL. Stačí nahradit sloupce – user_id, purchase_date a table – order. Každý uživatel získá nejnovější datum nákupu. Poté je seřadí podle posledního data nákupu. Nakonec vypočítá decil pomocí hodnocení.

vyberte user_id  ,latest,rank,round(10*(cnt-rank+1)/cnt,0) jako decil od (SELECT user_id,latest,@curRank :=@curRank + 1 AS rankFROM (vyberte user_id  ,max(datum_nákupu  ) nejpozději z `objednávky  ` seskupit podle user_id  )p, (SELECT @curRank :=0) rORDER BY last desc ) as dt,(select count(distinct user_id  ) jako cnt z`objednávky  `) jako ct

Pokud již máte poslední datum nákupu pro každého uživatele v tabulce a chcete přímo použít tabulku k výpočtu decilu z aktuálnosti nákupu, zde je dotaz

  1. Získejte název volající procedury nebo funkce v Oracle PL/SQL

  2. Prahové hodnoty optimalizace – seskupování a agregace dat, část 1

  3. Zabránění poklesu tabulky u cílového schématu v Oracle Streams

  4. Jak přidat sloupec, pokud neexistuje na PostgreSQL?