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