"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जानकारी खोने से बचने के लिए मैं विशिष्ट रिकॉर्ड के साथ डेटा को सटीक रूप से कैसे पिवोट कर सकता हूं?

जानकारी खोने से बचने के लिए मैं विशिष्ट रिकॉर्ड के साथ डेटा को सटीक रूप से कैसे पिवोट कर सकता हूं?

2024-12-27 को प्रकाशित
ब्राउज़ करें:808

How Can I Accurately Pivot Data with Distinct Records to Avoid Losing Information?

प्रभावी ढंग से विशिष्ट रिकॉर्ड्स को पिवोट करना

पिवोट क्वेरीज़ डेटा को सारणीबद्ध प्रारूप में बदलने में महत्वपूर्ण भूमिका निभाती हैं, जिससे डेटा विश्लेषण आसान हो जाता है। हालाँकि, अलग-अलग रिकॉर्ड के साथ काम करते समय, धुरी प्रश्नों का डिफ़ॉल्ट व्यवहार समस्याग्रस्त हो सकता है।

समस्या: विशिष्ट मानों को अनदेखा करना

निम्न तालिका पर विचार करें:

------------------------------------------------------
| Id    Code  percentage  name  name1   activity     |
-----------------------------------------------------
| 1   Prashant  43.43    James  James_  Running      |
| 1   Prashant  70.43    Sam    Sam_    Cooking      |
| 1   Prashant  90.34    Lisa   Lisa_   Walking      |
| 1   Prashant  0.00     James  James_  Stealing     |
| 1   Prashant  0.00     James  James_  Lacking      |
| 1   Prashant  73       Sam     Sam_   Cooking 1    |
------------------------------------------------------

एक पारंपरिक धुरी क्वेरी, जैसे:

SELECT Id,Code,
    MAX(CASE WHEN name = 'James' THEN activity END) AS James,
    MAX(CASE WHEN name1 = 'James_' THEN percentage END) AS James_,
    MAX(CASE WHEN name = 'Sam' THEN activity END) AS Sam,
    MAX(CASE WHEN name1 = 'Sam_' THEN percentage END) AS Sam_,
    MAX(CASE WHEN name = 'Lisa' THEN activity END) AS Lisa,
    MAX(CASE WHEN name1 = 'Lisa_' THEN percentage END) AS Lisa_
FROM A
GROUP BY Id, Code

परिणाम निम्न तालिका में होगा:

-------------------------------------------------------------------
Id  Code        James    James_  Sam        Sam_    Lisa      Lisa_
-------------------------------------------------------------------
1   Prashant    Running  43.43  Cooking     3.43    Walking   90.34
1   Prashant    Stealing 0.0    NULL        NULL    NULL      NULL
-------------------------------------------------------------------

यहाँ मुद्दा यह है कि जब नाम दोहराया जाता है और प्रतिशत 0 होता है, तो धुरी क्वेरी नाम 1 के लिए अलग-अलग मानों को अनदेखा कर देती है। इस मामले में, जेम्स के लिए "कमी" गतिविधि खो गई है।

समाधान: सटीकता के लिए ROW_NUMBER() का उपयोग करना

इसे संबोधित करने के लिए, हम परिचय दे सकते हैं ROW_NUMBER():

;with cte as 
(
    select *, ROW_NUMBER() over (partition by name order by percentage desc) ROWNUM
    from A
)
...

ROW_NUMBER() का उपयोग करके, हम नाम के आधार पर डेटा को विभाजित करते हैं और प्रत्येक पंक्ति को उस विभाजन के भीतर एक अद्वितीय संख्या निर्दिष्ट करते हैं। यह हमें नाम दोहराए जाने पर भी गतिविधियों और प्रतिशत के बीच संबंध बनाए रखने की अनुमति देता है।

परिणाम तालिका होगी:

----------------------------------------------------------
| Id  Code        James       James_  Sam         Sam_    Lisa    Lisa_
----------------------------------------------------------
| 1   Prashant    Running     43.43   Cooking 1   73      Walking 90.34
| 1   Prashant    Stealing    0.00    Cooking     3.43    NULL    NULL
| 1   Prashant    Lacking     0.00    NULL        NULL    NULL    NULL
----------------------------------------------------------

जेम्स के लिए "लाकिंग" सहित सभी गतिविधियां अब धुरी तालिका में दर्शाई गई हैं। यह तकनीक सुनिश्चित करती है कि अलग-अलग मान संरक्षित रहें, विश्लेषण के लिए सटीक डेटा प्रदान करें।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3