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

SQL सर्वर T-SQL फ़ंक्शन का उपयोग कैसे करें SUM:5 मामलों का उपयोग करें

टी-एसक्यूएल एसयूएम फ़ंक्शन मौलिक कार्यों में से एक है। इसका उद्देश्य निर्दिष्ट कॉलम में सभी मानों के योग की गणना करना है - ध्यान दें कि यह केवल संख्यात्मक कॉलम पर लागू होता है।

नीचे SQL SUM का सिंटैक्स दिया गया है।

-- Aggregate Function Syntax    
SUM ( [ ALL | DISTINCT ] expression )  

-- Analytic Function Syntax   
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
  • सभी एक डिफ़ॉल्ट मान है, पास होना अनिवार्य नहीं है। यह सभी मानों के योग को वापस करने की अनुमति देता है।
  • DISTINCT निर्दिष्ट करता है कि उसे केवल अद्वितीय मानों का योग लौटाना है, डुप्लिकेट मानों को अनदेखा करना।
  • अभिव्यक्ति बिट . को छोड़कर सटीक या अनुमानित संख्यात्मक डेटा प्रकार श्रेणी है डेटा प्रकार।
  • ओवर खंड के साथ विभाजन_by_clause और order_by_clause एक विशिष्ट विभाजन पर इस फ़ंक्शन का उपयोग करने के लिए है।
    • partition_by_clause FROM क्लॉज द्वारा उत्पादित परिणाम सेट को उन विभाजनों में विभाजित करता है जिन पर फ़ंक्शन लागू होता है
    • order_by_clause तार्किक क्रम निर्धारित करता है जिसमें ऑपरेशन किया जाता है।

SQL SUM फ़ंक्शन के उपयोग को प्रदर्शित करने के लिए, मैंने कर्मचारी . नाम की एक तालिका बनाई है . इसमें 5 कॉलम हैं - नाम , वेतन , किराया , कर , और रोजगार प्रकृति . निम्नलिखित उपयोग के मामले फोकस में होंगे:

  1. एसयूएम फ़ंक्शन का मूल या सरल उपयोग
  2. केस एक्सप्रेशन के साथ एसयूएम का उपयोग करना
  3. ग्रुप बाय स्टेटमेंट के साथ SUM का उपयोग करना
  4. हैविंग क्लॉज के साथ SUM का उपयोग करना
  5. एकाधिक या जटिल अंकगणितीय अभिव्यक्तियों के लिए SUM लागू करना

साथ ही, हम अन्य उपयोग के मामलों को सीखेंगे जैसे कि WHERE क्लॉज के साथ SUM का उपयोग करना, क्लॉज द्वारा ऑर्डर करना, या अद्वितीय मानों का योग प्राप्त करने के लिए SUM फ़ंक्शन में DISTINCT का उपयोग करना। लेकिन पहले चीज़ें पहले।

केस 1 का उपयोग करें:सरल SQL SUM फ़ंक्शन

जैसा कि ऊपर बताया गया है, मेरे पास कर्मचारी . नाम की एक टेबल है कुछ कॉलम के साथ। मान लें कि आपकी कंपनी जानना चाहती है कि वे सभी कर्मचारियों पर कितना वेतन खर्च कर रहे हैं। मूल्य प्राप्त करने के लिए, आपको बस सभी कर्मचारियों का वेतन जोड़ना होगा। SUM () आपके जीवन को आसान बना देगा, ऐसी रिपोर्ट शीघ्रता से प्रदान करेगा।

हम वेतन . पर SUM () फ़ंक्शन का उपयोग करेंगे कॉलम, और आउटपुट कंपनी के सभी कर्मचारियों पर खर्च की गई कुल वेतन लागत होगी:

USE DBName
GO
SELECT SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]

यदि आपके पास कॉलम में कोई NULL मान है, तो यह फ़ंक्शन इसे अनदेखा कर देगा और अगली पंक्ति मान के साथ आगे बढ़ेगा। इस प्रकार, आपके पास संगठन छोड़ने वाले किसी भी कर्मचारी के लिए NULL हो सकता है - कंपनी उस संसाधन के लिए कुछ भी भुगतान नहीं कर रही है।

आप नीचे आउटपुट देख सकते हैं - यह कर्मचारियों के वेतन पर खर्च किए गए $885000 की राशि को दर्शाता है:

अगर डुप्लिकेट . हैं किसी भी कॉलम पर मान, और आप सभी अद्वितीय . का योग प्राप्त करना चाहते हैं मान, आप DISTINCT . का उपयोग कर सकते हैं तर्क:

USE DBName
GO
--Get the sum of all values from column salary
SELECT SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
GO

--Get the sum of all unique values from column salary
SELECT SUM(DISTINCT Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
GO

मैंने दोनों बयानों को एक साथ निष्पादित किया है। सबसे पहले, यह सभी वेतन मूल्यों के साथ पिछले चरण में से एक था। दूसरा अद्वितीय मूल्यों के लिए था - इसमें DISTINCT . का उपयोग किया गया था तर्क।

नीचे दिए गए स्क्रीनशॉट पर एक नज़र डालें - यह दोनों कथनों के आउटपुट को प्रदर्शित करता है, और वे अलग हैं। जब मैं डिफ़ॉल्ट रूप से सभी मानों के लिए SUM फ़ंक्शन का उपयोग करता हूं, तो आउटपुट $885000 होता है। जब मैं DISTINCT . का उपयोग कर रहा हूं केवल अद्वितीय मानों का योग प्राप्त करने के लिए तर्क, आउटपुट $65000 है।

इस प्रकार, हमारे पास इस कॉलम में समान मान हैं। व्यापार के संदर्भ में, इसका मतलब है कि हमारे पास कुछ कर्मचारी हैं जो उनके वेतन के समान राशि प्राप्त कर रहे हैं।

यह उदाहरण DISTINCT . के उपयोग को दर्शाता है सभी अद्वितीय मूल्यों का योग प्राप्त करने के लिए तर्क। व्यवहार में, यह हमें अंतिम परिणाम से डुप्लिकेट मानों से बचने देता है।

हम कहां . का भी उपयोग कर सकते हैं एसक्यूएल एसयूएम () में खंड। मान लीजिए कि आपकी कंपनी उन कर्मचारियों के लिए खर्च की जाने वाली कुल लागत प्राप्त करना चाहती है, जो वेतन के रूप में $ 100000 से अधिक प्राप्त कर रहे हैं, न कि लागत वितरण को समझने के लिए एक स्थायी कर्मचारी। कहां क्लॉज परिणाम को फ़िल्टर करेगा और व्यावसायिक आवश्यकताओं के अनुसार कुल लागत प्रदान करेगा।

नीचे दिए गए टी-एसक्यूएल स्टेटमेंट में, आप कहां . देख सकते हैं रोजगार प्रकृति पर जोड़ा गया खंड कॉलम। यह कॉलम प्रत्येक कर्मचारी का रिकॉर्ड रखता है, चाहे वे स्थायी या संविदा कर्मचारी हों।

ध्यान दें कि मैंने दोनों आवश्यकताओं को पूरा करने के लिए AND ऑपरेटर का उपयोग किया है:

USE DBName
GO
SELECT SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
WHERE [Employment Nature] = ‘Contractor’ AND Salary >100000
GO

आउटपुट से पता चलता है कि कंपनी उन कर्मचारियों पर $240000 खर्च करती है जो $100000 या अधिक प्राप्त करते हैं, न कि स्थायी कर्मचारी।

केस 2 का उपयोग करें:केस एक्सप्रेशन के साथ SQL SUM फ़ंक्शन

हमारे परिदृश्य में, हम जानना चाहते हैं कि कितने कर्मचारी अपने अन्य विवरणों के साथ स्थायी रूप से काम कर रहे हैं। यह परिणाम प्राप्त करने के लिए, हम CASE . का उपयोग कर सकते हैं SUM () . में अभिव्यक्ति समारोह। हालांकि, आप केवल WHERE . डालकर यह परिणाम आसानी से प्राप्त कर सकते हैं खंड, कभी-कभी आपको CASE . की आवश्यकता होती है और SUM एक जटिल क्वेरी आवश्यकता में।

CASE . के साथ नीचे T-SQL कथन पर एक नज़र डालें SUM () . के अंदर अभिव्यक्ति समारोह:

--USE SUM function with CASE expression
SELECT 
SUM(
CASE
  WHEN [Employment Nature] = ‘Permanent’ THEN 1 
  ELSE 0 
  END) As [Total Employees],
   FROM [dbo].[Employee]

उपरोक्त कथनों का आउटपुट 4 दर्शाता है - कर्मचारी में उनके रिकॉर्ड के अनुसार कंपनी के पास केवल 4 स्थायी कर्मचारी हैं टेबल।

आइए CASE . का एक और उदाहरण लें SUM () . के साथ ।

उपयोग के मामले 1 की खोज करते समय, हमने संविदात्मक कर्मचारियों पर खर्च की गई कुल लागत को पाया, जो उपरोक्त अनुभाग में उपयोग के मामले में $ 100000 या उससे अधिक प्राप्त करते हैं। अब, हम ऐसे कर्मचारियों की संख्या का पता लगाना चाहते हैं। और, मामला अभिव्यक्ति फिर से तस्वीर में आ जाएगी।

हम CASE . का उपयोग कर सकते हैं पहले इस्तेमाल किए गए उसी टी-एसक्यूएल स्टेटमेंट में। नीचे उदाहरण है:

USE DBName
GO
SELECT SUM(Salary) As [Total Employees Cost],
SUM(CASE WHEN [Employment Nature] = ‘Contractor’ AND Salary >100000 THEN 1
ELSE 0
END) AS [Contractors Headcount]
FROM [dbo].[Employee]
WHERE [Employment Nature] = ‘Contractor’ AND Salary >100000
GO

आउटपुट हमें दिखा रहा है कि 2 ठेकेदार काम कर रहे हैं और $100000 से अधिक प्राप्त कर रहे हैं।

आप मामले . के विभिन्न पहलुओं का उपयोग कर सकते हैं चुनें . में अभिव्यक्ति SUM () . के साथ स्टेटमेंट आपकी व्यावसायिक आवश्यकताओं को पूरा करने के लिए कार्य करता है।

केस 3 का उपयोग करें:ग्रुप बाय के साथ SQL SUM फंक्शन

मान लेते हैं कि हमारी कंपनी जानना चाहती है कि वह अपने स्थायी कर्मचारियों पर कुल कितना पैसा खर्च करती है, और कितना पैसा संविदा कर्मचारियों पर खर्च करती है। हम SUM . का उपयोग करके यह परिणाम सेट प्राप्त कर सकते हैं GROUP BY . के साथ कार्य करें बयान।

नीचे दिए गए टी-एसक्यूएल स्टेटमेंट को देखें। मैंने GROUP BY . का उपयोग किया है रोजगार प्रकृति . पर वक्तव्य कॉलम और SUM फ़ंक्शन को वेतन . पर लागू किया प्रत्येक प्रकार के कर्मचारी का कुल वेतन उनके रोजगार प्रकृति के तहत वर्गीकृत करने के लिए कॉलम।

USE DBName
GO
SELECT [Employment Nature], SUM(Salary) As [Total Employees Cost]
FROM [dbo].[Employee]
GROUP BY [Employment Nature]

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

केस 4 का उपयोग करें:हैविंग स्टेटमेंट के साथ SQL SUM फंक्शन

अब, हम HAVING और GROUP BY स्टेटमेंट के साथ SUM फ़ंक्शन के उपयोग का एक साथ पता लगाएंगे। हमारा उदाहरण उन कर्मचारियों की सूची प्रदर्शित करेगा जो प्रति वर्ष $150000 से अधिक प्राप्त करते हैं। हम इसे केवल WHERE क्लॉज के साथ SELECT स्टेटमेंट का उपयोग करके प्राप्त कर सकते हैं, लेकिन मैं आपको दिखाऊंगा कि HAVING, GROUP BY और SUM के साथ समान परिणाम कैसे प्राप्त करें।

2 टी-एसक्यूएल स्क्रिप्ट हैं। दोनों कथनों का आउटपुट समान है, लेकिन पहली स्क्रिप्ट एक साधारण सेलेक्ट स्टेटमेंट का उपयोग करती है, जबकि दूसरा कोड GROUP BY और HAVING क्लॉज़ के साथ SUM फ़ंक्शन का उपयोग करता है।

USE DBName
GO
SELECT name, salary
FROM [dbo].[Employee]
WHERE Salary >=150000
GO

--SUM with HAVING
SELECT name, SUM(salary) AS [Salary]
FROM [dbo].[Employee]
GROUP BY name HAVING SUM(salary) >=150000
GO

दोनों लिपियों के आउटपुट देखें:

इन कथनों का उपयोग करने का एक और पहलू है। मैंने किराया . प्राप्त करने के लिए SUM फ़ंक्शन में अंकगणितीय व्यंजकों को पास किया है और कर कर्मचारियों का खर्च। फिर, मैंने GROUP BY . लागू किया और हो रहा है वेतन . पर विवरण कॉलम। सरल शब्दों में, मैं $150000 या अधिक के वेतन वाले कर्मचारियों द्वारा खर्च किए गए कुल किराए और कर व्यय को जानना चाहता था।

मैंने दो प्रश्नों का भी उपयोग किया। पहली सूची में उन सभी कर्मचारियों का विवरण है जो $150000 या अधिक प्राप्त करते हैं। यह आउटपुट केवल सत्यापन और सत्यापन के लिए प्राप्त किया जाता है। दूसरा वाला SUM . का उपयोग करता है दो स्तंभों पर कार्य करें (किराया और कर ) उनके कुल खर्च के रूप में। फिर लागू होता है GROUP BY और हो रहा है खंड:

USE DBName
GO
SELECT name, salary
FROM [dbo].[Employee]
WHERE Salary >=150000
GO

--SUM with HAVING and GROUP BY
SELECT name, SUM( rent + tax) AS [Total Expenses]
FROM [dbo].[Employee]
GROUP BY name HAVING SUM(salary) >=150000
GO

आइए आउटपुट का विश्लेषण करें। पहली क्वेरी $150000 या उससे अधिक के वेतन वाले कर्मचारियों के सभी विवरण प्रदर्शित करती है। अब, दूसरा क्वेरी परिणाम देखें। यहां, हमने कर्मचारियों और उनके खर्चों को उनके वेतन कटऑफ के आधार पर प्राप्त किया है जो कि $150000 या उससे अधिक है। इस तरह, हमने सत्यापित किया है कि SUM, GROUP BY और HAVING क्लॉज़ के साथ हमारी क्वेरी सही परिणाम देती है।

केस 5 का उपयोग करें:एकाधिक अंकगणितीय अभिव्यक्तियों के साथ SQL SUM फ़ंक्शन

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

हम अपने कर्मचारियों की कुल बचत के बारे में एक रिपोर्ट तैयार करना चाहते हैं। व्यय या भत्तों के विभिन्न कॉलम हो सकते हैं, जैसे मकान किराया भत्ता, यात्रा भत्ता, भोजन भत्ता, आदि। हमारी तालिका कर्मचारी कर्मचारियों के खर्च से संबंधित दो कॉलम हैं - आवास के लिए भुगतान किया गया किराया और सरकार को भुगतान किए गए कर। आप अवधारणा को समझ सकते हैं और इसे इसी तरह और अधिक स्तंभों पर लागू कर सकते हैं।

USE DBName
GO
--List table data for reference
SELECT *
FROM [dbo].[Employee]
GO

--SUM with multiple arithmetic expressions
SELECT name, SUM(salary – (rent + tax)) AS [Total Savings]
FROM [dbo].[Employee]
GROUP BY name
GO

पहली क्वेरी कर्मचारी . तालिका से सभी डेटा प्रदर्शित करती है . हम प्रत्येक कर्मचारी के लिए कुल बचत के बारे में दूसरी क्वेरी द्वारा लौटाए गए हमारे वास्तविक आउटपुट को सत्यापित करने के लिए एक संदर्भ के रूप में इस डेटा का उपयोग करेंगे।

हमें यह सभी खर्चों को जोड़कर और फिर कर्मचारी के वेतन से सभी खर्चों को घटाकर मिला है जैसा कि SUM में दिया गया है। फ़ंक्शन स्टेटमेंट। आप किसी भी कर्मचारी के लिए इसे मान्य करने के लिए पहले परिणाम सेट से इस डेटा की मैन्युअल रूप से गणना करके इसे सत्यापित कर सकते हैं।

निष्कर्ष

हमने अन्य क्लॉज के साथ SQL SUM फ़ंक्शन के कई उपयोग मामलों की खोज की है। वैसे, SQL सर्वर विशेषज्ञों के लिए आधुनिक डिजिटल उपकरण इन कार्यों को अत्यधिक सरल बना सकते हैं। उदाहरण के लिए, dbForge SQL पूर्ण में एक ऐसी सुविधा शामिल है जो SSMS परिणाम ग्रिड में सेट किए गए तैयार परिणाम से कुल कार्यों की गणना कर सकती है।

आप SQL SUM फ़ंक्शन से संबंधित अपने पसंदीदा सुझाव साझा कर सकते हैं। टिप्पणी अनुभाग का उपयोग करने के लिए आपका स्वागत है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर में डुप्लीकेट कुंजी अद्यतन पर MySQL के बराबर

  2. SQL सर्वर (T-SQL) में अनुलग्नक के रूप में क्वेरी परिणाम ईमेल कैसे करें

  3. एसक्यूएल सर्वर - प्राकृतिक जॉइन की कमी / एक्स जॉइन वाई यूज़िंग (फ़ील्ड)

  4. SQL सर्वर का उपयोग करके वर्तमान तिथि से 30 दिन कैसे घटाएं?

  5. SQL सर्वर तालिका में JSON फ़ाइल कैसे आयात करें