आज तक का वर्तमान सक्रिय क्रम
चल रहे क्रम की गणना करना और रुकावट आने पर उसे फिर से शुरू करना
आज तक का वर्तमान सक्रिय क्रम, CoddyKit पर कोडिंग साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह कोडिंग साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
उत्पाद संबंधी प्रश्न
लगातार सक्रियता की सुविधाओं (जैसे Duolingo या Snapchat) को ऐतिहासिक सबसे लंबे क्रम के बजाय वर्तमान क्रम की आवश्यकता होती है। साक्षात्कार का प्रश्न है: "प्रत्येक उपयोगकर्ता के लिए, आज समाप्त होने वाले कितने लगातार दिनों से वह सक्रिय है? यदि वह आज सक्रिय नहीं था, तो इसे 0 कर दें।"
इसमें एक अतिरिक्त मोड़ है: क्रम का आधार आज होना चाहिए (या छूट नियम के अंतर्गत कल)। आइए इसे उस अंतर-और-खंड आधार पर बनाएँ, जिसे आप पहले से जानते हैं।
सक्रियता की परिभाषा
पहले साक्षात्कारकर्ता के साथ नियम स्पष्ट करें — ये निर्णय क्वेरी बदल देते हैं:
- क्या क्रम के लिए आज की गतिविधि आवश्यक है, या कल स्वीकार्य है (छूट अवधि)?
- क्या प्रति दिन की कई घटनाओं को एक दिन में समेट दिया जाता है?
- "दिन" निर्धारित करने वाला समय क्षेत्र कौन-सा है?
हम मानेंगे कि प्रत्येक सक्रिय दिन के लिए एक पंक्ति है और क्रम वर्तमान माना जाएगा, यदि उसमें आज OR कल शामिल हो।
फिर से खंड बनाएँ
आधार का फिर से उपयोग करें: प्रत्येक उपयोगकर्ता के दिनों को तिथि के अनुसार क्रमांक दें और घटाएँ। प्रत्येक लगातार क्रम एक ही आधार साझा करता है। वर्तमान क्रम बस वह खंड है जिसका अंतिम दिन आज या कल है।
WITH numbered AS (
SELECT user_id, login_date,
ROW_NUMBER() OVER (
PARTITION BY user_id ORDER BY login_date
) AS rn
FROM logins
),
islands AS (
SELECT user_id,
MIN(login_date) AS streak_start,
MAX(login_date) AS streak_end,
COUNT(*) AS streak_len
FROM numbered
GROUP BY user_id, login_date - rn
)
SELECT * FROM islands;नवीनतम खंड पहचानना
प्रत्येक उपयोगकर्ता का सबसे हाल का खंड वह है जिसका streak_end सबसे बड़ा है। हम जाँचते हैं कि वह अंत चल रहे क्रम में गिने जाने के लिए पर्याप्त हाल का है या नहीं।
CURRENT_DATE आज की तारीख देता है। CURRENT_DATE - 1 कल है। यदि streak_end इनमें से किसी एक के बराबर है, तो क्रम सक्रिय है।
WITH /* ...numbered, islands... */
latest AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY user_id ORDER BY streak_end DESC
) AS rn2
FROM islands
)
SELECT * FROM latest WHERE rn2 = 1;हाल की तिथि का परीक्षण लागू करना
अब तय करें कि नवीनतम खंड सक्रिय है या नहीं। यदि उसकी अंतिम तिथि आज या कल है, तो वर्तमान क्रम उसकी लंबाई के बराबर होगा; अन्यथा उपयोगकर्ता का क्रम टूट चुका है और वर्तमान मान 0 होगा।
SELECT user_id,
CASE
WHEN streak_end >= CURRENT_DATE - 1
THEN streak_len
ELSE 0
END AS current_streak
FROM latest
WHERE rn2 = 1;वर्तमान क्रम की पूरी क्वेरी
सभी स्तरों को एक साथ जोड़ें: क्रमांक दें, खंड बनाएँ, प्रत्येक उपयोगकर्ता का नवीनतम खंड चुनें, फिर हाल की तिथि वाला CASE लागू करें। यही पूरा उत्तर है।
WITH numbered AS (
SELECT user_id, login_date,
ROW_NUMBER() OVER (
PARTITION BY user_id ORDER BY login_date
) AS rn
FROM logins
),
islands AS (
SELECT user_id,
MAX(login_date) AS streak_end,
COUNT(*) AS streak_len
FROM numbered
GROUP BY user_id, login_date - rn
),
latest AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY user_id ORDER BY streak_end DESC
) AS rn2
FROM islands
)
SELECT user_id,
CASE WHEN streak_end >= CURRENT_DATE - 1
THEN streak_len ELSE 0 END AS current_streak
FROM latest
WHERE rn2 = 1
ORDER BY user_id;केवल आज की सख्ती
यदि व्यावसायिक नियम सख्त है — क्रम तभी सक्रिय हो जब उपयोगकर्ता केवल आज सक्रिय रहा हो — तो तुलना बदलकर streak_end = CURRENT_DATE आवश्यक करें।
छूट-अवधि वाला संस्करण (>= CURRENT_DATE - 1) अधिक सुविधाजनक और वास्तविक ऐप्स में आम है, जहाँ दिन अभी समाप्त नहीं हुआ होता। साक्षात्कारकर्ता कौन-सा संस्करण चाहते हैं, यह हमेशा स्पष्ट कर लें।
CASE WHEN streak_end = CURRENT_DATE
THEN streak_len ELSE 0 END AS current_streakवैकल्पिक तरीका: पीछे की ओर चलना
एक अलग मानसिक मॉडल, जिसे कुछ साक्षात्कारकर्ता पसंद करते हैं: प्रत्येक दिन और आज के बीच का अंतर निकालें। कोई दिन वर्तमान क्रम का हिस्सा तभी है, जब उस दिन से आज तक का हर दिन मौजूद हो। समान रूप से, login_date की तुलना CURRENT_DATE - (offset from the latest) से करें।
खंड-विधि आम तौर पर अधिक साफ़ होती है, लेकिन वैकल्पिक तरीका जानना आपकी गहराई दिखाता है। मुख्य विचार वही है: आज पर आधारित एक अखंड श्रृंखला।
निष्क्रिय उपयोगकर्ताओं को शामिल करना
logins से अनुपस्थित उपयोगकर्ताओं का कोई खंड नहीं होता और वे गायब हो जाते हैं। यदि हर उपयोगकर्ता के लिए क्रम दिखाना आवश्यक हो (संभवतः 0), तो उपयोगकर्ता सूची को LEFT JOIN करें और परिणाम को COALESCE से 0 कर दें।
SELECT u.user_id,
COALESCE(s.current_streak, 0) AS current_streak
FROM users u
LEFT JOIN current_streaks s ON s.user_id = u.user_id;समय क्षेत्र की समस्याएँ
यदि गतिविधि टाइमस्टैम्प के रूप में संग्रहीत है, तो "आज" समय क्षेत्र पर निर्भर करता है। तिथि में बदलने से पहले समय क्षेत्र रूपांतरित करें।
- UTC में संग्रहीत करके तुलना करें, या पहले उपयोगकर्ता के स्थानीय क्षेत्र में रूपांतरित करें।
- Postgres में
event_ts AT TIME ZONE 'UTC' AT TIME ZONE user_tzका उपयोग करें, फिर तिथि में बदलें। - UTC टाइमस्टैम्प पर लगाया गया साधारण
::dateशाम की घटना को गलत कैलेंडर दिन में रख सकता है।
इसका उल्लेख करने से साक्षात्कार में पूछे जाने वाला एक सामान्य अनुवर्ती प्रश्न पहले ही स्पष्ट हो जाता है।
SELECT user_id,
(event_ts AT TIME ZONE 'UTC'
AT TIME ZONE 'America/New_York')::date AS local_day
FROM events;प्रदर्शन और समापन
बार-बार ताज़ा किए जाने वाले डैशबोर्ड के लिए यह क्वेरी प्रत्येक उपयोगकर्ता पर एकल पास में चलती है। इसे तेज़ रखने के लिए:
(user_id, login_date)पर अनुक्रमणिका बनाएँ।- वैकल्पिक रूप से आगत डेटा को हाल की तिथियों तक सीमित करें — वर्तमान क्रम में उसकी अपनी लंबाई से पुराना डेटा शामिल नहीं हो सकता, इसलिए उदाहरण के लिए पिछले 400 दिनों की चलायमान अवधि पर्याप्त है।
- यदि इसे बहुत बार पढ़ा जाता है, तो दैनिक डेटा को क्रम-सारणी में भौतिक रूप से संग्रहीत करें।
त्वरित जाँच
पुष्टि करें कि आप "अभी" वाले आधार को समझते हैं।
पुनरावलोकन
आज की तारीख तक वर्तमान सक्रिय क्रम की गणना करने के लिए:
login_date - ROW_NUMBER()आधार का उपयोग करके खंड बनाएँ।- अधिकतम
streak_endके आधार पर प्रत्येक उपयोगकर्ता का नवीनतम खंड चुनें। - उसकी लंबाई तभी लौटाएँ, जब
streak_endआज हो (या छूट के लिए कल); अन्यथा 0 लौटाएँ। - निष्क्रिय खातों के लिए उपयोगकर्ताओं की तालिका को LEFT JOIN करें; तिथि में बदलने से पहले समय क्षेत्रों को संभालें।
अब आप लगातार क्रम के पूरे विश्लेषण-उपकरण समूह में दक्ष हैं: क्रमों का पता लगाना, सबसे लंबा क्रम, N लगातार शर्तें और सक्रिय क्रम।
एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 90
- पाठ
- 360
अक्सर पूछे जाने वाले प्रश्न
क्या “आज तक का वर्तमान सक्रिय क्रम” पाठ निःशुल्क है?
हाँ—“आज तक का वर्तमान सक्रिय क्रम” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“आज तक का वर्तमान सक्रिय क्रम” में मैं क्या सीखूँगा?
चल रहे क्रम की गणना करना और रुकावट आने पर उसे फिर से शुरू करना आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ कोडिंग साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या कोडिंग साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर कोडिंग साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“आज तक का वर्तमान सक्रिय क्रम” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस कोडिंग साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर कोडिंग साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- लगातार कैलेंडर दिन पहचानना
- प्रति उपयोगकर्ता सबसे लंबा लगातार क्रम
- शर्त पूरी करने वाली N लगातार पंक्तियाँ
- आज तक का वर्तमान सक्रिय क्रम