कभी-कभी आप MySQL के आधार पर पुनरावृत्ति से दशमलव की गणना करना चाह सकते हैं। उदाहरण के लिए, ग्राहकों को कुल बिक्री के आधार पर खरीद या ऑर्डर की पुनरावृत्ति के आधार पर रैंक करने के लिए।
रीसेंसी से Decile की गणना करें
यह उन लोगों के लिए विशेष ऑफ़र बनाने में मदद करता है जिन्होंने हाल ही में आपकी वेबसाइट पर कुछ खरीदा है। इसके लिए अभी तक कोई कार्य नहीं हैं। इसे करने के लिए तैयार प्रश्न है।
उदाहरण के लिए, आपके पास एक टेबल है आदेश जिसमें प्रत्येक उपयोगकर्ता के लिए सभी उत्पाद ऑर्डर शामिल हैं। आप आदेशों की पुनरावृत्ति से दशमलव की गणना करना चाहते हैं।
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 | +-----------+----------------+---------+---------------+
यहाँ एक क्वेरी है जिसका उपयोग आप MySQL में रीसेंसी से दशमलव की गणना करने के लिए कर सकते हैं। बस कॉलम को बदलें - user_id, buy_date और टेबल - ऑर्डर। यह प्रत्येक उपयोगकर्ता को नवीनतम खरीद तिथि प्राप्त करता है। फिर यह उन्हें खरीद की नवीनतम ओवर डेट पर रैंक करता है। अंत में, यह रैंक का उपयोग करके दशमलव की गणना करता है।
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
यदि आपके पास पहले से ही तालिका में प्रत्येक उपयोगकर्ता के लिए नवीनतम खरीद तिथि है और आप सीधे तालिका का उपयोग खरीद की पुनरावृत्ति से दशमलव की गणना करने के लिए करना चाहते हैं, तो यहां एक प्रश्न है