कोडिंग साक्षात्कार की तैयारी · पाठ

तिथियों को छोटा करना और समूह बनाना

DATE_TRUNC और उसके समकक्षों से सप्ताह, महीने और तिमाही के अनुसार समूह बनाना

पाठ 2, कुल 4 में से13 चरण

तिथियों को छोटा करना और समूह बनाना, CoddyKit पर कोडिंग साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह कोडिंग साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

तारीखों को समूहों में बाँटने के बारे में क्यों पूछा जाता है

“सप्ताह के अनुसार राजस्व दिखाइए” या “महीने के अनुसार सक्रिय उपयोगकर्ता” विश्लेषक साक्षात्कारों के सबसे सामान्य प्रश्न हैं। जाँची जाने वाली कुशलता यह है कि सटीक टाइमस्टैम्प को अधिक व्यापक समूह में बदला जाए, ताकि पंक्तियाँ एक साथ समूहित हो सकें।

शुरुआती उम्मीदवारों की आम गलती केवल महीने की संख्या निकालना है, जिससे अलग-अलग वर्षों के समान महीने आपस में मिल जाते हैं। पेशेवर उत्तर है अवधि की शुरुआत तक सीमित करना: हर टाइमस्टैम्प को उसकी अवधि की शुरुआत पर ले आइए।

  • सप्ताह, महीने, तिमाही और वर्ष के समूह
  • DATE_TRUNC और अलग-अलग SQL बोलियों में इसके समकक्ष
  • सही ढंग से समूह बनाना, ताकि चार्ट की समय-रेखाएँ ठीक से मिलें

DATE_TRUNC: मुख्य साधन

PostgreSQL में, DATE_TRUNC(unit, ts) दी गई इकाई से छोटी सभी जानकारी को शून्य कर देता है। 'month' तक सीमित करने पर मार्च का कोई भी टाइमस्टैम्प 2024-03-01 00:00:00 में बदल जाता है।

लौटाया गया मान अब भी टाइमस्टैम्प होता है, इसलिए यह कालानुक्रमिक क्रम में व्यवस्थित होता है और पूरी तरह सही समूह बनाता है। रिपोर्ट तैयार करने के लिए यह सबसे उपयोगी तारीख फ़ंक्शन है।

SELECT DATE_TRUNC('month', TIMESTAMP '2024-03-17 14:30:00');
-- 2024-03-01 00:00:00

महीने के अनुसार राजस्व का समूह बनाना

यह इसका मानक उदाहरण है। टाइमस्टैम्प को महीने तक सीमित कीजिए, फिर समूह बनाकर योग कीजिए। समूह में वर्ष भी शामिल होने के कारण जनवरी 2023 और जनवरी 2024 अलग-अलग रहते हैं।

सीमित किए गए मान के अनुसार क्रम देने पर चार्ट के लिए तैयार एक साफ़ समय-श्रृंखला मिलती है।

SELECT
  DATE_TRUNC('month', order_ts) AS month,
  SUM(amount)                   AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;

EXTRACT बनाम DATE_TRUNC

साक्षात्कारकर्ता अक्सर इस अंतर के बारे में सीधे पूछते हैं। दोनों अवधि से जुड़ी जानकारी निकालते हैं, लेकिन दोनों अलग-अलग सवालों का उत्तर देते हैं।

  • EXTRACT(MONTH FROM ts) सभी वर्षों के मार्च के लिए संख्या 3 लौटाता है, जो मौसमी प्रवृत्तियों के लिए उपयोगी है।
  • DATE_TRUNC('month', ts) विशिष्ट महीने की शुरुआत लौटाता है और वर्षों को अलग रखता है, इसलिए यह समय-श्रृंखला के लिए उपयोगी है।

यदि आप महीने की प्रवृत्ति वाले चार्ट के लिए EXTRACT(MONTH ...) के अनुसार समूह बनाएँगे, तो अलग-अलग वर्ष चुपचाप एक-दूसरे में मिल जाएँगे।

-- Seasonality: which month is busiest on average?
SELECT EXTRACT(MONTH FROM order_ts) AS month_num, COUNT(*)
FROM orders GROUP BY 1 ORDER BY 1;

-- Time series: month-by-month trend (years kept separate)
SELECT DATE_TRUNC('month', order_ts) AS month, COUNT(*)
FROM orders GROUP BY 1 ORDER BY 1;

सप्ताह के समूह और सोमवार का सवाल

साप्ताहिक समूह बनाते समय एक सूक्ष्म बात सामने आती है, जिसे साक्षात्कारकर्ता अक्सर पूछते हैं: सप्ताह कब शुरू होता है? PostgreSQL का DATE_TRUNC('week', ts) हमेशा सोमवार पर ले आता है (ISO सप्ताह)।

यदि व्यवसाय को रविवार से शुरू होने वाले सप्ताह चाहिए, तो आपको समय में अंतर समायोजित करना होगा। एक सामान्य तरीका है तारीख को एक दिन पीछे करना, फिर उसे सीमित करना और अंत में एक दिन आगे करना।

-- ISO week (Monday start)
SELECT DATE_TRUNC('week', order_ts) AS iso_week FROM orders;

-- Sunday-start week
SELECT DATE_TRUNC('week', order_ts + INTERVAL '1 day') - INTERVAL '1 day'
  AS sunday_week
FROM orders;

तिमाही के समूह

वित्त से जुड़े पदों में तिमाही के अनुसार रिपोर्ट बनाना आम है। DATE_TRUNC('quarter', ts) किसी भी टाइमस्टैम्प को उसकी तिमाही के पहले दिन पर ले आता है: 1 जनवरी, 1 अप्रैल, 1 जुलाई या 1 अक्टूबर।

यदि आप तिमाही को संख्या के रूप में दिखाना चाहते हैं, तो वर्ष के साथ EXTRACT(QUARTER ...) का उपयोग कीजिए।

SELECT
  DATE_TRUNC('quarter', order_ts)                  AS quarter_start,
  EXTRACT(YEAR FROM order_ts) || '-Q'
    || EXTRACT(QUARTER FROM order_ts)              AS quarter_label,
  SUM(amount)                                      AS revenue
FROM orders
GROUP BY 1, 2
ORDER BY 1;

MySQL में DATE_TRUNC नहीं है

अलग-अलग SQL बोलियों से जुड़ा एक पसंदीदा सवाल है: “MySQL में DATE_TRUNC नहीं है, तो महीने के अनुसार समूह कैसे बनाएँगे?” अलग-अलग प्रणालियों में चलने वाला उत्तर है तारीख को अपनी इच्छित सूक्ष्मता तक प्रारूपित करना।

  • DATE_FORMAT(ts, '%Y-%m-01') महीने की शुरुआत को पाठ या तारीख के रूप में देता है।
  • DATE_FORMAT(ts, '%Y-%m') 2024-03 जैसी क्रमबद्ध की जा सकने वाली पाठ-कुंजी देता है।

सप्ताह के लिए MySQL में YEARWEEK() उपलब्ध है; इसका मोड तर्क सप्ताह की शुरुआत नियंत्रित करता है।

-- MySQL month bucket
SELECT DATE_FORMAT(order_ts, '%Y-%m-01') AS month, SUM(amount)
FROM orders
GROUP BY 1
ORDER BY 1;

एसक्यूएल सर्वर में समूह बनाना

एसक्यूएल सर्वर में पहले सीधे सीमित करने वाला फ़ंक्शन नहीं था, इसलिए उम्मीदवार DATEFROMPARTS या DATEADD/DATEDIFF वाले तरीके का उपयोग करते थे। आधुनिक संस्करणों (2022+) में DATETRUNC जोड़ा गया है।

पुराना तरीका—“युगारंभ से अब तक की इकाइयाँ गिनिए, फिर उन्हें वापस जोड़ दीजिए”—हर संस्करण में काम करता है और इसे जानना उपयोगी है।

-- Portable SQL Server month truncation
SELECT DATEADD(month, DATEDIFF(month, 0, order_ts), 0) AS month_start
FROM orders;

-- SQL Server 2022+
SELECT DATETRUNC(month, order_ts) AS month_start FROM orders;

समय-श्रृंखला में रिक्तियाँ भरना

सिर्फ सीमित करने पर उन अवधियों का पता नहीं चलता जिनमें कोई पंक्ति नहीं है: जिस महीने में कोई ऑर्डर नहीं हुआ, वह दिखाई ही नहीं देगा। साक्षात्कारकर्ता यह देखते हैं कि आपको इस बात का ध्यान है या नहीं।

इसका समाधान है अवधियों की पूरी श्रृंखला तैयार करना और उसके साथ डेटा पर LEFT JOIN करना। PostgreSQL में generate_series यह पूरी श्रृंखला बनाता है।

SELECT
  cal.month,
  COALESCE(SUM(o.amount), 0) AS revenue
FROM generate_series(DATE '2024-01-01', DATE '2024-12-01',
                      INTERVAL '1 month') AS cal(month)
LEFT JOIN orders o
  ON DATE_TRUNC('month', o.order_ts) = cal.month
GROUP BY cal.month
ORDER BY cal.month;

विस्तृत उदाहरण: प्रति सप्ताह सक्रिय उपयोगकर्ता

समूह बनाने की प्रक्रिया को अलग-अलग गिनती के साथ मिलाइए। “साप्ताहिक सक्रिय उपयोगकर्ता” का अर्थ है हर सप्ताह के समूह में अलग-अलग उपयोगकर्ताओं की संख्या; यह उत्पाद-विश्लेषण का वास्तविक प्रश्न है।

घटना के टाइमस्टैम्प को सप्ताह तक सीमित कीजिए, फिर COUNT(DISTINCT user_id) का उपयोग कीजिए। यदि आप शून्य गतिविधि वाले सप्ताह दिखाने के लिए सप्ताहों की पूरी श्रृंखला के साथ जोड़ने की बात भी कहेंगे, तो आपको अतिरिक्त अंक मिलेंगे।

SELECT
  DATE_TRUNC('week', event_ts) AS week,
  COUNT(DISTINCT user_id)      AS wau
FROM events
GROUP BY 1
ORDER BY 1;

अनुक्रमित स्तंभ पर समूह बनाना

एक महत्वपूर्ण प्रदर्शन-संबंधी सावधानी यह है कि WHERE खंड के भीतर तारीख वाले स्तंभ पर DATE_TRUNC लगाने से नियोजक उस स्तंभ के अनुक्रमणिका का उपयोग नहीं कर पाता।

GROUP BY में इसका उपयोग ठीक है, लेकिन फ़िल्टर लगाते समय मूल स्तंभ की तुलना पहले से निकाली गई सीमाओं से कीजिए। हमने इस अर्ध-खुले प्रतिरूप को पहले देखा था; यह यहाँ भी लागू होता है।

-- Avoid in WHERE: DATE_TRUNC('month', order_ts) = '2024-03-01'
-- Prefer:
SELECT * FROM orders
WHERE order_ts >= DATE '2024-03-01'
  AND order_ts <  DATE '2024-04-01';

त्वरित जाँच

ऐसे महीने की प्रवृत्ति वाले चार्ट के लिए सही साधन चुनिए जिसमें अलग-अलग वर्ष अलग रहें।

पुनरावलोकन: तारीखों को सीमित करना और समूह बनाना

याद रखने योग्य बातें:

  • DATE_TRUNC(unit, ts) टाइमस्टैम्प को किसी अवधि की शुरुआत पर ले आता है और वर्षों को अलग रखता है, इसलिए यह समय-श्रृंखला के लिए सही साधन है।
  • EXTRACT केवल एक संख्या लौटाता है; यह मौसमी प्रवृत्तियों के लिए अच्छा है, लेकिन वर्षों को मिला देता है।
  • PostgreSQL में सप्ताह सोमवार से शुरू होते हैं; रविवार चाहिए तो अंतर समायोजित कीजिए।
  • MySQL में DATE_FORMAT का उपयोग होता है; पुराने एसक्यूएल सर्वर में DATEADD(DATEDIFF(...)) वाला तरीका और 2022+ में DATETRUNC उपलब्ध है।
  • खाली अवधियाँ दिखाने के लिए तैयार की गई तारीखों की पूरी श्रृंखला + LEFT JOIN का उपयोग कीजिए और अनुक्रमणिका का उपयोग बनाए रखने के लिए WHERE में DATE_TRUNC न लगाइए।
शुरुआत निःशुल्क

एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
90
पाठ
360

अक्सर पूछे जाने वाले प्रश्न

क्या “तिथियों को छोटा करना और समूह बनाना” पाठ निःशुल्क है?

हाँ—“तिथियों को छोटा करना और समूह बनाना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“तिथियों को छोटा करना और समूह बनाना” में मैं क्या सीखूँगा?

DATE_TRUNC और उसके समकक्षों से सप्ताह, महीने और तिमाही के अनुसार समूह बनाना आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ कोडिंग साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या कोडिंग साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर कोडिंग साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“तिथियों को छोटा करना और समूह बनाना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस कोडिंग साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर कोडिंग साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. तिथि की गणना और अंतराल
  2. तिथियों को छोटा करना और समूह बनाना
  3. स्ट्रिंग का विश्लेषण और फ़ॉर्मैटिंग
  4. समय क्षेत्र और टाइमस्टैम्प
← कोडिंग साक्षात्कार की तैयारी पर वापस जाएँ