Wednesday, November 16, 2016

Lesson 13 Aggregate, Alias, Group by and Having in SQL

सबसे पहेले एक टेबल बना लेते है और उसमे डेटा इन्सर्ट कर लेते है.
Create table tblEmployee
(
ID int primary key identity(1,1),
Name nvarchar(50),
[State] nvarchar(20),
City nvarchar(30),
Salary int
)

insert into tblEmployee(Name, [state], City, Salary) 
Values('Prakash', 'Panjab', 'Pathankot', 15000),
('Farhan', 'Gujarat', 'Valsad', 5000),
('Sandip', 'Karnataka', 'Harihar', 6000),
('Heena', 'Gujarat', 'Rajkot', 8500),
('Mayuri', 'Haryana', 'Sonipat', 7000),
('Pradip', 'Gujarat', 'Surat', 8500),
('Umang', 'Gujarat', 'Surat', 9500),
('Nirali', 'Gujarat', 'Valsad', 8000),
('Kavya', 'Haryana', 'Sonipat', 6500),
('Gaurang', 'Maharastra', 'Kalyan', 8000),
('Hitesh', 'Utter Pradesh', 'Bijnor', 8000),
('Manoj', 'Rajasthan', 'Jaipur', 10000),
('Usha', 'Gujarat', 'Rajkot', 11200),
('Ali', 'Karnataka', 'Harihar', 8000),
('Lalit', 'Rajasthan', 'Jaipur', 8000),
('OM', 'Gujarat', 'Valsad', 16000),
('Pravin', 'Panjab', 'Mohali', 13000),
('Rina', 'Gujarat', 'Rajkot', 14000),
('Vimal', 'Rajasthan', 'Jaipur', 6000),
('Hemali', 'Panjab', 'Mohali', 18000)

Select * from tblEmployee

तो ये हमारा टेबल इस तरह से बनेगा.


SQL में बहुत से Aggregate function इनबिल्ट है


जिनमे प्रमुख रूप से उपयोग में लिये जाने वाले Functions के बारेमे आज हम चर्चा करेंगे.
सभी Employee की Salary का टोटल प्राप्त करने के लिये आप Sum() Function का उपयोग कर सकते है.




देखिए यहाँ Colum Grid में Column हेडिंग (No column name) है. यानी की कोलम का कोई नाम नहीं है.
अगर आप column को कोई नाम (Alias Name) देना चाहे तो इस तरह से as की-वर्ड लगाकर दे सकते हो.



दुसरे Aggregate Function देखते है जो की एकदम आसान है.

यहाँ पर हमने Salary Column में से सबसे कम salary, सबसे ज्यादा salary, एवरेज salary एवं Employee की संख्या प्राप्त की है.

अगर हमें City वाइज Salary चाहिए तो Query इस तरह से Group by close के साथ होगी.




इसी Result Set में आप salary को सबसे कम से अधिक के क्रमिक रूप में देखने के लिये Order By क्लोज जोड़ दे.





अगर आप City wise और State wise Total salary चाहते है तो Query इस तरह से होगी.







Group by क्लोज का उपयोग करने के लिये इन बातो का ध्यान रखे.
Select list में जो Column Aggregate नहीं है वह सारे कॉलम Group by के अन्दर भी होने चाहिए.



इस उदहारण में हमने राज्य वाइज़ कितने Employee है और Sate वाइज़ कितनी Salary है यह परिणाम प्राप्त किया है.





अब यह Query Run करने पर Total Employe count और सभी Employee की Total Salary मिलेगी.




ऊपर वाले दोनों Result Set को मिलाकर एक रिजल्ट सेट चाहिए तो Union All से दोनों Query को जोड़ दे. और परिणाम को A to Z छोटेसे बड़े क्रम के चाहिए तो लास्ट में Order by क्लोज का उपयोग करे.



Union All से एक रिजल्ट सेट प्राप्त करने के लिये दोनों क्वेरी में Column की संख्या बराबर होनी चाहिए और Column के DataType मेच होने चाहिए.

Group by के साथ Where और Having close भी Use किया जा सकता है.
Where क्लोज Group by से पहेले आता है जब की Having क्लोज Group by के बाद में आता है




Where क्लोज का उपयोग करने पर सारी row पहेले filter हो जाती है बादमे aggregation होता है.
Having क्लोज का उपयोग करने पर पहेले aggregation होता है बादमे row filter होती है
इस लिये आप Where Clouse के साथ aggreate function नहीं use कर सकते. जब की Having क्लोज के साथ आप aggregate function use कर सकते हो.




1 comment:

  1. If you have any questions or suggestions please write in comments...

    ReplyDelete