Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में राउंड (UP/DOWN) कैसे करें – 5 उपयोगी टिप्स

जब हम बच्चे थे तब से हमें संख्याओं को गोल करना सिखाया गया है। जब आप 1.15 को निकटतम दहाई तक पूर्णांकित करते हैं, तो क्या यह 1.2 या 1.1 होगा? उत्तर देने के लिए SQL ROUND फ़ंक्शन का उपयोग करना आपको भ्रमित कर सकता है। बाद में, आप देखेंगे कि मेरा क्या मतलब है।

[sendpulse-form id="12010″]

यहाँ एक और सवाल है। 1 + 1 का योग कितना होता है? यह काफी बेवकूफी भरा सवाल है। यह पहली बार गणित सीखने वाले बच्चों के लिए है, हमारे लिए बड़े नहीं हैं। लेकिन कृपया नीचे दिए गए कोड पर एक नज़र डालें:

-- Variables for input values
DECLARE @value1 DECIMAL(3,2) = 1.05
DECLARE @value2 DECIMAL(3,2) = 1.45
DECLARE @sum1 DECIMAL(3,2) = @value1 + @value2

-- Variables for rounded values
DECLARE @roundedValue1 TINYINT = ROUND(@value1,0)
DECLARE @roundedvalue2 TINYINT = ROUND(@value2,0)
DECLARE @sum2 TINYINT = ROUND(@sum1,0)

-- Surprise!
SELECT 'sum of ' + CAST(@value1 AS VARCHAR(4)) + ' + ' + CAST(@value2 AS VARCHAR(4)) AS Q1,  @sum1 AS Sum1
SELECT 'sum of ' + CAST(@roundedValue1 AS VARCHAR(4)) + ' + ' + CAST(@roundedValue2 AS VARCHAR(4)) AS Q2,  @sum2 AS Sum2

फिर नीचे दिए गए परिणाम देखें:

यहाँ क्या हुआ है? हमें दशमलव भाग के साथ दो मान मिलते हैं। फिर, हम उन्हें SQL ROUND का उपयोग करके निकटतम पूर्ण संख्या में गोल करते हैं। उनकी रकम भी गोल है। लेकिन 1 + 1 3 कैसे हो सकता है?!

एक तेज-तर्रार SQL प्रो एक ही बार में कोड में समस्या का पता लगाएगा। लेकिन इस पर विचार करें:

  • 2.5 को निकटतम पूर्ण संख्या में पूर्णांकित करना 3 है, 2 नहीं।
  • 1 + 1 का योग 2 होता है।

यह मुश्किल है, है ना?

यहाँ बात है। यदि आप सावधान नहीं हैं, तो SQL ROUND आपको पागल बना सकता है। यह डेवलपर्स और एकाउंटेंट के बीच तर्क का एक स्रोत भी हो सकता है। इनमें से एक है भौतिकता सिद्धांत के साथ व्यवहार करते समय। तर्क बदसूरत हो सकते हैं।

आप क्या कर सकते हैं?

SQL सर्वर में राउंड फंक्शन

नहीं, मैं आपको यह समस्या अगले डेवलपर को देने के लिए नहीं कह रहा हूं। यह पोस्ट आपको परिणाम से आपको और आपके उपयोगकर्ता दोनों को खुश करने के लिए सर्वोत्कृष्ट सुझाव देगा। इनमें से कुछ टिप्स ऐप के फ्रंट-एंड साइड पर या रिपोर्ट में किसी संख्या को गोल करने पर भी लागू हो सकते हैं।

आइए हमारे 5 सुझावों को विस्तार से देखें।

एसक्यूएल में नंबरों के लिए राउंड ऑफ फंक्शन

आप पहले से ही जानते हैं कि SQL में संख्याओं को कैसे पूर्णांकित किया जाता है, तो क्यों पूछें? यह कैसे पूछने के बारे में नहीं है। यह पूछने के बारे में है कि कब। आप नीचे दिए गए समान प्रश्न पूछ सकते हैं:

  • क्या आप गणना करने से पहले इनपुट मानों को पूर्णांकित करते हैं?
  • या, क्या आप इनपुट मानों की गणना करते हैं, और फिर परिणाम को पूर्णांकित करते हैं?

आप जो गणना करने जा रहे हैं, उसके आधार पर और प्रश्न उठ सकते हैं।

मुद्दा यह है कि क्या आपको उपयोगकर्ताओं से राउंडिंग ऑफ स्टैंडर्ड या मॉडल मिलता है। फिर आप प्रश्न लिखने के लिए इस मॉडल का उपयोग कर सकते हैं। आप यह अनुमान या अनुमान नहीं लगाते हैं जिससे बाद में असहमति हो सकती है। और अगर यह इस मानक को रिपोर्ट में कहीं नोट के रूप में शामिल करने में मदद करता है, तो इसे करें।

मानक का एक और हिस्सा यह है कि कितने दशमलव स्थानों का उपयोग करना है। क्या होगा यदि टेबल कॉलम में डेटा प्रकार DECIMAL(10,4) है? आप इसे केवल 2 दशमलव स्थानों तक कैसे पूर्णांकित करेंगे?

नीचे दिए गए कोड को आजमाएं:

DECLARE @value DECIMAL(10,4)

SET @value = 8346.1556

-- This will result in 8346.16 instead of 8346.1600
SELECT CAST(ROUND(@value, 2) AS DECIMAL(10,2)) 

ROUND के बाद CAST केवल दो दशमलव स्थानों को प्रदर्शित करेगा। दो शून्य काट दिए जाएंगे:

समझना SQL दशमलव स्थानों में कैसे चक्कर लगाता है

यहां हम अपने पहले प्रश्न का उत्तर देते हैं। जब आप 1.15 को निकटतम दहाई तक पूर्णांकित करते हैं, तो क्या यह 1.2 या 1.1 होगा?

सबसे पहले, आप इसे DECIMAL डेटा प्रकार से जांचें:

DECLARE @value DECIMAL(3,2)

SET @value = 1.15

SELECT @value
SELECT ROUND(@value, 1)  -- This will result in 1.2 or 1.20

उपरोक्त कोड का परिणाम 1.20 या 1.2 है:

लेकिन क्या होगा यदि डेटा प्रकार एक फ्लोट है? आइए इसे बदलने का प्रयास करें।

DECLARE @value FLOAT

SET @value = 1.15

SELECT @value
SELECT ROUND(@value, 1)  -- This will result to 1.1

इसका परिणाम क्या है? यह 1.1 है। इसे स्वयं देखें:

ऐसा नहीं है कि मैं आपको और संदेह देना चाहता हूं। हालांकि, आपको यह जानने की जरूरत है कि ये डेटा प्रकार, हालांकि दोनों संख्याओं के लिए उपयोग किए जाते हैं, समान नहीं बनाए गए हैं

  • FLOAT और REAL अनुमानित अंक हैं, जिन्हें गोल करने के लिए अनुशंसित नहीं है - WHERE क्लॉज में समानता जांच के लिए भी नहीं।
  • DECIMAL और NUMERIC में निश्चित सटीकता और पैमाना होता है, और हम उन्हें सटीक अंक के रूप में संदर्भित करते हैं। इसलिए, जब हम 1.15 को निकटतम दहाई तक पूर्णांकित करते हैं, तो सही उत्तर 1.2 होता है।
  • पूर्णांक भी सटीक अंक होते हैं। वे पूरे अंकों को पूर्णांकित करने के लिए सुरक्षित हैं।

दुविधा टेबल डिजाइन से शुरू होती है। हो सकता है कि आप FLOAT या REAL कॉलम के बारे में कुछ करना चाहें, जिसे कहीं गोल कर दिया जाएगा।

3. संगति के लिए समान डेटा स्रोत पर SQL ROUND का उपयोग करें

मान लें कि आपको अलग-अलग विवरण दिखाने के लिए कई आय रिपोर्ट बनाने की आवश्यकता है:सारांश, प्रकार के अनुसार विस्तृत विश्लेषण और स्रोत के अनुसार विस्तृत विश्लेषण. ये सभी तीन रिपोर्ट सेंट या दशमलव भागों को महत्वहीन मानेंगे। इसलिए, मानों को पूर्ण संख्याओं में पूर्णांकित करना अनिवार्य है।

तीनों रिपोर्ट में लगातार परिणाम के लिए, निम्नलिखित लागू करें:

  • यह सुनिश्चित करने के लिए समान आधार तालिकाओं से चयन करें कि विवरण से योग सारांश के अनुरूप हैं।
  • गोल करने के लिए एक ही मॉडल का उपयोग करें (ऊपर # 1 बिंदु)

क्या आप इन राजस्व रिपोर्टों पर अपने उपयोगकर्ताओं को खुश करना चाहते हैं? आपको अपने नंबर कहां और कैसे मिलते हैं, इस पर लगातार बने रहें।

4. एसक्यूएल फर्श या छत वीएस राउंड

ऐसे मामले हो सकते हैं जहां आपको अगले पूर्ण संख्या में गोल या गोल करना होगा। इस मामले में, राउंड () के बजाय CEILING () या FLOOR () उपयुक्त विकल्प है ()

CEILING() किसी मान को अगले पूर्णांक तक पूर्णांकित करता है:

SELECT CEILING(1);   -- returns 1 
SELECT CEILING(1.6);  -- returns 2
SELECT CEILING(1.4);  -- returns 2

इस बीच, FLOOR () राउंड डाउन:

SELECT FLOOR(1);   -- returns 1 
SELECT FLOOR(2.1); -- returns 2 
SELECT FLOOR(2.9); -- returns 2

5. अपने उपयोगकर्ताओं के साथ परिणामों का परीक्षण करें

आपके द्वारा सभी प्रश्नों और रिपोर्ट डिज़ाइन को पूरा करने के बाद, अंतिम भाग उपयोगकर्ताओं के साथ अपने काम की जाँच करना है। हम गलतियाँ कर सकते हैं चाहे हम कितने भी अच्छे हों या हम कितनी भी मेहनत करें। कभी-कभी, हमें इसे ठीक करने के लिए कुछ और पुनरावृत्तियों की आवश्यकता होती है।

आपके उपयोगकर्ताओं के पास परीक्षण परिदृश्य होंगे जो रिपोर्ट की सटीकता सुनिश्चित करेंगे। या आपके काम की तुलना उनके काम से करने के लिए उसके पास मैन्युअल रूप से एक एक्सेल फ़ाइल हो सकती है। जो भी हो, बेहतर व्यवस्था के लिए उनके साथ काम करें। आपको खुशी होगी कि आपने किया।

निष्कर्ष

SQL ROUND के साथ कार्य करना कई बार कठिन हो सकता है। हालाँकि, यहाँ प्रस्तुत युक्तियाँ साबित करती हैं कि आप इन बाधाओं से जीत सकते हैं। आपने क्या सीखा?

  • अपने उपयोगकर्ताओं से मानक या मॉडल को पूर्णांकित करने के लिए कहें।
  • आपके द्वारा उपयोग किए जा रहे डेटा प्रकार को जानें।
  • एकरूपता के लिए एक ही डेटा स्रोत पर ROUND का उपयोग करें।
  • कभी-कभी, FLOOR या CEILING ROUND से उपयुक्त हो सकते हैं।
  • अंत में, अपने उपयोगकर्ताओं के साथ अपने परिणामों का परीक्षण करें।

क्या यह पोस्ट मददगार है? यदि यह आपके लिए है, तो दूसरों को भी इसकी आवश्यकता हो सकती है। कृपया इस पोस्ट को अपने पसंदीदा सोशल मीडिया पर शेयर करें।

संबंधित लेख

  1. एसक्यूएल सर्वर में ओवर क्लॉज और पार्टिशन बाय क्लॉज के साथ रनिंग टोटल की गणना करना
  2. लेन-देन SQL का उपयोग करके माध्यिका की गणना करें


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर (टी-एसक्यूएल उदाहरण) में 'स्मॉलडेटटाइम' को 'टाइम' में कनवर्ट करें

  2. VBA कोड प्राथमिक कुंजी के साथ लिंक की गई तालिका को जोड़ने के लिए

  3. हटाने के बाद SQL सर्वर में AutoIncrement रीसेट करें

  4. SQL सर्वर के लिए सबसे तेज़ तरीका सम्मिलित करता है, अद्यतन करता है, चयन करता है

  5. SQL LIKE क्लॉज में SqlParameter का उपयोग काम नहीं कर रहा है