Aggregations
Data တွေကိုစုပေါင်းပြီးတော့တွက်ချက်မှုတွေ၊ report ပုံစံမျိုးတွေထုတ်ပေးနိုင်ဖို့အတွက် SQL က Aggregations ဆိုတဲ့ functions တွေကို support လုပ်ပေးထားပါတယ်။ သဘောတရားကိုပိုနားလည်နိုင်ဖို့အတွက်အောက်က query တွေစမ်းရေးကြည့်ပြီး results တွေကိုကြည့်နိုင်ပါတယ်။
သုံးနေကျ students table ကိုပဲဆက်သုံးကြပါမယ်။
COUNT
ထွက်လာမယ့် result set တစ်ခုရဲ့data rows တွေကိုတွက်ချင်တဲ့အချိန်မှာ COUNT ဆိုတဲ့ function ကိုသုံးနိုင်ပါတယ်။
SELECT COUNT(*) AS TotalStudents
FROM students;
COUNT(*) ဆိုပြီး * ကိုသုံးပြီးတော့အားလုံးးရဲ့ results ကိုယူပါမယ်။ AS TotalStudents ဆိုတာကတော့ alias ပေးလိုက်တာဖြစ်ပါတယ်။ alias ဆိုတာကတော့အသုံးပြု (ပြန်ခေါ်လို့ရမယ့်)နာမည်တစ်ခုပေးလိုက်တာလို့ဆိုနိုင်ပါတယ်။ လောလောဆယ်သိပ်နားမလည်လည်းရပါတယ်။
alias မပါဘဲတန်းသုံးလည်းရပါတယ်။ ထွက်လာတဲ့ column နာမည်နေရာမှာတော့ alias နာမည်မဟုတ်တော့ဘဲ COUNT(*) ဆိုပြီးတော့ဘဲပါလာပါမယ်။ ဒါကြောင့်ပြန်ခေါ်သုံးရလွယ်အောင် နားလည်ရလွယ်ကူတဲ့ alias နာမည်လေးတွေပေးပြီး query ရေးလေ့ရှိကြပါတယ်။

SUM
ကိန်းဂဏန်းတွေရှိတဲ့ column တွေရဲ့တန်ဖိုးတွေကိုစုပြီးပေါင်းချင်တဲ့အချိန်မှာ SUM ကိုသုံးနိုင်ပါတယ်။ ဥပမာ students table ထဲက age column တွေအကုန်ပေါင်းချင်တယ်ဆိုပါစို့၊ အောက်ကလိုမျိုး SUM ကိုသုံးပြီးရေးနိုင်ပါတယ်။
SELECT SUM(age) AS TotalAge
FROM students;
AVG
AVG ကတော့ SUMနဲ့ပုံစံတူပဲ၊ သို့ပေမယ့်ပေါင်းတာမဟုတ်ဘဲနဲ့ Average ကိုတွက်ပေးတာဖြစ်ပါတယ်။ students table ထဲက age column ရဲ့ average ကိုတွက်ကြည့်ရအောင်။ (ဥပမာဒီကျောင်းကကျောင်းသားတွေရဲ့ average age ကဘယ်လောက်လဲဆိုတာမျိုးတွက်တဲ့နေရာမျိုးမှာအသုံးဝင်ပါတယ်။)
SELECT AVG(age) AS AverageAge
FROM students;
MIN
MIN ကတော့အသေးဆုံးကိန်းဂဏန်းကိုဆွဲထုတ်ချင်တဲ့အချိန်မျိုးမှာသုံးပါတယ်။ students table ထဲကအသက်အငယ်ဆုံးကျောင်းသားကိုသိချင်တယ်ဆိုရင် ဒီလိုမျိုးထုတ်ကြည့်နိုင်ပါတယ်။
SELECT MIN(age) AS YoungestAge
FROM students;
MAX
MAX ကတော့ MIN နဲ့ပြောင်းပြန်အကြီးဆုံးကိုဆွဲထုတ်တာဖြစ်ပါတယ်။
SELECT MAX(age) AS OldestAge
FROM students;
GROUP BY
GROUP BY ကိုအရှေ့မှာတွေ့ပြီးသားဖြစ်မှာပါ။ ထပ်ဖော်ပြရတဲ့အကြောင်းရင်းက Aggregation function တွေသုံးပြီး query ဆွဲတဲ့အချိန်မှာ GROUP BY ကိုသုံးပြီး group လေးတွေခွဲပြီး data တွေကိုထုတ်ကြည့်လို့ရပါတယ်။ ဥပမာ major တစ်ခုချင်းစီမှာကျောင်းသားဘယ်နှစ်ယောက်ရှိလဲဆိုတာမျိုးသိချင်ရင် GROUP BY ကို Aggregation function တွေနဲ့ပေါင်းပြီးအောက်ကလိုသုံးနိုင်ပါတယ်။
SELECT major, COUNT(*) AS NumberOfStudents
FROM students
GROUP BY major;
HAVING
HAVING ကတော့ အရှေ့အပိုင်းတွေမှာဖော်ပြခဲ့တဲ့ WHERE နဲ့အတူတူပါပဲ။ Aggregation functions တွေမှာ WHERE ကိုအသုံးပြုလို့မရနိုင်တဲ့အတွက် HAVING ကိုသုံးခြင်းဖြစ်ပါတယ်။ အပေါ်က query ကိုပဲ HAVING နဲ့ filter ခံကြည့်ရအောင်။ major group ထဲကမှကျောင်းသားတစ်ယောက်အထက်ရှိတဲ့ major ကိုပဲလိုချင်တယ်ဆိုပါစို့။
SELECT major, COUNT(*) AS NumberOfStudents
FROM students
GROUP BY major
HAVING COUNT(*) > 1;
Aggregation functions တွေက real world မှာလည်းအသုံးဝင်တဲ့ functions တွေဖြစ်ပါတယ်။ သူ့ချည်းပဲဆိုမသိသာပေမယ့် GROUP BY တို့ HAVING တို့ခံပြီးသုံးမယ်ဆိုအရမ်း powerful ဖြစ်တဲ့အပြင် query ကများတဲ့အခါရေးရတာလဲ နည်းနည်း tricky ဖြစ်တတ်ပါတယ်။ အပေါ်ကကျနော့်နမူနာကို စုတုပြုပြီး မိမိဘာသာဆက်ပြီးလေ့ကျင့်ကြည့်ကြပါဦး။
Last updated
Was this helpful?