Skip to content
GitHub

Data များ ပေါင်းချုပ် တွက်ချက်ခြင်း (Aggregate & Group By)

Aggregate Functions (ပေါင်းချုပ် တွက်ချက်မှုများ)

Section titled “Aggregate Functions (ပေါင်းချုပ် တွက်ချက်မှုများ)”

Aggregate Function တွေဆိုတာ Data အများကြီး (Row တွေ အများကြီး) ကို တွက်ချက်ပြီး၊ ရလဒ်အနေနဲ့ တန်ဖိုး တစ်ခုတည်း (Single Value) ပဲ ပြန်ထုတ်ပေးတဲ့ Function တွေပါ။

အသုံးအများဆုံး Aggregate Function ၅ ခု ရှိပါတယ်။

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

ဥပမာ - ဝန်ထမ်းအားလုံး ပေါင်း ဘယ်နှယောက် ရှိလဲ?

Section titled “ဥပမာ - ဝန်ထမ်းအားလုံး ပေါင်း ဘယ်နှယောက် ရှိလဲ?”
SELECT COUNT(EmployeeID) AS "Total Employees"
FROM Employees;

ဥပမာ - ဝန်ထမ်းအားလုံးရဲ့ ပျမ်းမျှ လစာကို တွက်ပါ။

Section titled “ဥပမာ - ဝန်ထမ်းအားလုံးရဲ့ ပျမ်းမျှ လစာကို တွက်ပါ။”
SELECT AVG(Salary) AS "Average Salary"
FROM Employees;

အုပ်စုဖွဲ့ တွက်ချက်ခြင်း (The GROUP BY Clause)

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

Aggregate Function တွေကို တစ်ခုတည်း သုံးရင် Table တစ်ခုလုံးစာအတွက် အဖြေတစ်ခုပဲ ထွက်ပါတယ်။ အဲဒီလို မဟုတ်ဘဲ အုပ်စု (Category) လိုက် ခွဲပြီး တွက်ချင်ရင် (ဥပမာ - ဌာနအလိုက် ပျမ်းမျှလစာ တွက်ချင်ရင်) GROUP BY Clause ကို အသုံးပြုရပါတယ်။

GROUP BY ဟာ တူညီတဲ့ တန်ဖိုးရှိတဲ့ Data တွေကို အုပ်စုလေးတွေ ဖွဲ့ပေးပါတယ်။ အဲဒီလို ဖွဲ့ပြီးမှ Aggregate Function က အုပ်စု တစ်ခုစီအတွက် တွက်ချက်ပေးတာပါ။

ဥပမာ - ဌာန (Department) အလိုက် ဝန်ထမ်း ဘယ်နှယောက်စီ ရှိလဲ?

Section titled “ဥပမာ - ဌာန (Department) အလိုက် ဝန်ထမ်း ဘယ်နှယောက်စီ ရှိလဲ?”
SELECT Department, COUNT(EmployeeID) AS "Number of Employees"
FROM Employees
GROUP BY Department;

(ဒီ Query က “HR မှာ ၂ ယောက်၊ IT မှာ ၂ ယောက်” စသဖြင့် ဌာနအလိုက် ခွဲပြီး ပြပေးပါလိမ့်မယ်။)

အရေးကြီးသော စည်းမျဉ်း: SELECT မှာ ပါတဲ့ Column တိုင်း (Aggregate Function ထဲမှာ မပါတဲ့ သာမန် Column တိုင်း) ဟာ GROUP BY နောက်မှာ မဖြစ်မနေ ပါရှိရပါမယ်။ မပါရင် Error တက်ပါလိမ့်မယ်။


အုပ်စုဖွဲ့ထားသော Data များကို စစ်ထုတ်ခြင်း (The HAVING Clause)

Section titled “အုပ်စုဖွဲ့ထားသော Data များကို စစ်ထုတ်ခြင်း (The HAVING Clause)”

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

အုပ်စု ဖွဲ့လိုက်ပြီး (GROUP BY သုံးပြီး) နောက်မှ ရလာတဲ့ အုပ်စု (ဥပမာ - ဝန်ထမ်း ၂ ယောက်အထက် ရှိတဲ့ ဌာန) ကိုပဲ စစ်ထုတ်ချင်ရင် WHERE ကို သုံးလို့ မရတော့ပါဘူး။ အဲဒီအစား HAVING Clause ကို သုံးရပါတယ်။

ဥပမာ - ဝန်ထမ်း (၁) ယောက်ထက် ပိုရှိသော ဌာနများကို ရွေးထုတ်ပါ။

Section titled “ဥပမာ - ဝန်ထမ်း (၁) ယောက်ထက် ပိုရှိသော ဌာနများကို ရွေးထုတ်ပါ။”
SELECT Department, COUNT(EmployeeID) AS "Number of Employees"
FROM Employees
GROUP BY Department
HAVING COUNT(EmployeeID) > 1;

(ဒီ Query က ဝန်ထမ်း ၁ ယောက်ပဲ ရှိတဲ့ Marketing ဌာနကို ဖယ်ထုတ်ပြီး ကျန်တဲ့ ဌာနတွေကိုပဲ ပြပေးပါလိမ့်မယ်။)

SQL ရေးသားရမည့် အစီအစဉ် (Order of Execution)

Section titled “SQL ရေးသားရမည့် အစီအစဉ် (Order of Execution)”

Query တစ်ခုမှာ Clause တွေ အစုံပါလာရင် အောက်ပါ အစီအစဉ်အတိုင်း ရေးရပါတယ်။

  1. SELECT (ဘာလိုချင်လဲ)
  2. FROM (ဘယ်ကနေ ယူမှာလဲ)
  3. WHERE (ဘယ် Data တွေကိုပဲ ယူမှာလဲ - Before Grouping)
  4. GROUP BY (ဘယ်လို အုပ်စုဖွဲ့မလဲ)
  5. HAVING (ဘယ် အုပ်စုတွေကိုပဲ ယူမှာလဲ - After Grouping)
  6. ORDER BY (ဘယ်လို စီစဉ်ပြမလဲ)