Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hitung desil dari keterkinian di MySQL

Terkadang Anda mungkin ingin menghitung desil dari keterkinian di MySQL berdasarkan. Misalnya, untuk memberi peringkat pelanggan berdasarkan keterkinian pembelian atau pesanan, bukan berdasarkan total penjualan.

Hitung Desil dari Keterkinian

Ini membantu membuat penawaran khusus untuk orang-orang yang baru saja membeli sesuatu di situs web Anda. Belum ada fungsi untuk itu. Ini kueri yang sudah jadi untuk melakukannya.

Misalnya, Anda memiliki tabel pesanan yang berisi semua pesanan produk untuk setiap pengguna. Anda ingin menghitung desil dari keterkinian pesanan.

order
+-----------+------------+------------------+
|  user_id  |   product  |   purchase_date  |
+-----------+------------+------------------+
|     1     |     Soap   |     2013-11-20   |
|     4     |   Perfume  |     2013-07-02   |
|     1     |   Noodles  |     2013-10-20   |
|     4     |     Soap   |     2013-11-11   |
|     1     |    Glue    |     2013-09-12   |
|     3     |     Deo    |     2013-10-20   |
+-----------+------------+------------------+
deciles
+-----------+----------------+---------+---------------+
|  user_id  |   latest       |  rank   |     decile    |
+-----------+----------------+---------+---------------+
|     1     |  2013-11-20    |    1    |      100      |
|     4     |  2013-11-11    |    2    |     66.67     |
|     3     |  2013-10-20    |    3    |     33.33     |
+-----------+----------------+---------+---------------+

Berikut kueri yang dapat Anda gunakan untuk menghitung desil dari keterkinian di MySQL. Ganti saja kolom – user_id, purchase_date dan table – order. Itu mendapat tanggal pembelian terbaru setiap pengguna. Kemudian peringkat mereka pada tanggal pembelian terakhir. Terakhir, ia menghitung desil menggunakan peringkat.

select user_id,latest,rank,round(10*(cnt-rank+1)/cnt,0) as decile from   
(SELECT  user_id,latest,@curRank := @curRank + 1 AS rank
FROM      (select user_id,max(purchase_date) as latest from `order` group by user_id)
p, (SELECT @curRank := 0) r
ORDER BY  latest desc ) as dt,(select count(distinct user_id) as cnt from
`order`) as ct

Jika Anda sudah memiliki tanggal pembelian terakhir untuk setiap pengguna dalam tabel dan ingin langsung menggunakan tabel tersebut untuk menghitung desil dari kebaruan pembelian, berikut adalah kuerinya

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lengkapi Laravel 8 Soft Hapus &Kembalikan Tutorial Catatan yang Dihapus

  2. Manajemen akun pengguna, peran, izin, otentikasi PHP dan MySQL

  3. Cara Mempertahankan Garis Miring Balik saat Melepas Kutipan di MySQL – QUOTE()

  4. Neo4j - Hapus Node menggunakan Cypher

  5. Grup MySQL oleh SUM