Skip to content
GitHub

တွက်ချက်ခြင်းများ (Aggregations & GROUP BY)

Database ထဲက Data တွေကို ဒီတိုင်း ခေါ်ကြည့်ရုံတင် မကဘဲ၊ စာရင်းချုပ် ကြည့်ချင်တဲ့ အခါမျိုး (ဥပမာ - User စုစုပေါင်း ဘယ်နှစ်ယောက် ရှိလဲ? ဒီလ ရောင်းရငွေ စုစုပေါင်း ဘယ်လောက်လဲ?) ဆိုရင် SQL ရဲ့ Aggregate Functions တွေကို အသုံးပြုရပါတယ်။

အသုံးများသော တွက်ချက်မှု (၅) မျိုး

Section titled “အသုံးများသော တွက်ချက်မှု (၅) မျိုး”
  1. COUNT(): အရေအတွက် ဘယ်လောက် ရှိလဲ ဆိုတာကို ရေတွက် စစ်ဆေးပေးပါတယ်။
  2. SUM(): စုစုပေါင်း ပေါင်းလဒ်ကို ရှာပေးပါတယ်။
  3. AVG(): ပျမ်းမျှတန်ဖိုး (Average) ကို ရှာပေးပါတယ်။
  4. MAX(): အများဆုံး (သို့မဟုတ်) အကြီးဆုံး တန်ဖိုးကို ရှာပေးပါတယ်။
  5. MIN(): အနည်းဆုံး (သို့မဟုတ်) အသေးဆုံး တန်ဖိုးကို ရှာပေးပါတယ်။

ဥပမာ - Database ထဲမှာ User စုစုပေါင်း ဘယ်နှစ်ယောက် ရှိလဲ ဆိုတာ သိချင်ရင်:

SELECT COUNT(*) FROM users;

ဥပမာ - ဒီလ အရောင်း စုစုပေါင်း ဘယ်လောက်ဖိုး ရောင်းရလဲ ဆိုတာ သိချင်ရင်:

SELECT SUM(total_price) FROM orders;

အုပ်စုဖွဲ့ခြင်း (GROUP BY)

Section titled “အုပ်စုဖွဲ့ခြင်း (GROUP BY)”

GROUP BY ဆိုတာကတော့ တူရာတူရာ အချက်အလက်တွေကို အုပ်စု တစ်ခုစီ ဖွဲ့ပေးတာပါ။ သူ့ကို များသောအားဖြင့် အပေါ်မှာ ပြောခဲ့တဲ့ COUNT, SUM စတဲ့ တွက်ချက်မှုတွေနဲ့ တွဲပြီး သုံးလေ့ရှိပါတယ်။

ဥပမာ - “ရန်ကုန်မှာ User ဘယ်နှစ်ယောက် ရှိသလဲ၊ မန္တလေးမှာ User ဘယ်နှစ်ယောက် ရှိသလဲ” ဆိုပြီး မြို့အလိုက် အုပ်စုဖွဲ့ သိချင်တယ် ဆိုပါစို့။

SELECT city, COUNT(*) AS user_count
FROM users
GROUP BY city;

(အဓိပ္ပာယ်: users Table ထဲက Data တွေကို city (မြို့) အလိုက် အုပ်စုဖွဲ့လိုက်မယ်။ ပြီးရင် မြို့တစ်မြို့စီ (အုပ်စု တစ်ခုစီ) မှာ User ဘယ်နှစ်ယောက်စီ ပါသလဲ ဆိုတာကို COUNT နဲ့ ရေတွက်ပြပေးမယ်)

အုပ်စုဖွဲ့ပြီးမှ စစ်ထုတ်ခြင်း (HAVING)

Section titled “အုပ်စုဖွဲ့ပြီးမှ စစ်ထုတ်ခြင်း (HAVING)”

ရှေ့သင်ခန်းစာမှာ Data တွေကို ကိုယ်လိုချင်တဲ့ အခြေအနေနဲ့ စစ်ထုတ်ချင်ရင် WHERE ကို သုံးခဲ့ပါတယ်။ ဒါပေမဲ့ ပေါင်းထား၊ ရေထားတဲ့ တွက်ချက်မှု ရလဒ်တွေ (ဥပမာ COUNT, SUM စတာတွေ) ကို အခြေခံပြီး စစ်ထုတ်ချင်ရင်တော့ WHERE ကို သုံးလို့ မရတော့ပါဘူး။ အဲ့ဒီအစား HAVING ကို သုံးပေးရပါတယ်။

  • WHERE ဟာ မတွက်ချက်ခင် (မအုပ်စုဖွဲ့ခင်) Data အကြမ်းတွေကို စစ်ထုတ်တာပါ။
  • HAVING ကတော့ တွက်ချက်ပြီးမှ (အုပ်စုဖွဲ့ပြီးမှ) ရလာတဲ့ ရလဒ်တွေ အပေါ်မှာ ထပ်ပြီး စစ်ထုတ်တာပါ။

ဥပမာ - User အရေအတွက် (၅၀) ယောက်ထက် ပိုများတဲ့ မြို့တွေကိုပဲ စစ်ထုတ်ပြီး ကြည့်ချင်တယ် ဆိုပါစို့။

SELECT city, COUNT(*) AS user_count
FROM users
GROUP BY city
HAVING COUNT(*) > 50;

(အဓိပ္ပာယ်: မြို့အလိုက် အုပ်စုဖွဲ့ပြီး User အရေအတွက်ကို အရင် ရှာမယ်။ အဲ့ဒီ ရလာတဲ့ အဖြေတွေ ထဲကမှ User (၅၀) ထက်ကျော်တဲ့ မြို့တွေကိုပဲ HAVING နဲ့ ထပ်ပြီး ရွေးထုတ်ပြမယ်)