ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Part 1, Part 2 မှာ table တည်ဆောက်ပြီး search/join query တွေ ရေးပြီးသွားပါပြီ၊ ဒီ Part 3 က project ရဲ့ နောက်ဆုံးအဆင့်ဖြစ်ပြီး business owner တစ်ယောက်လို summary report ထုတ်ကြည့်ပါမယ်။ Author တစ်ယောက်စီရေးထားတဲ့ book အရေအတွက်၊ customer တစ်ယောက်စီ ဘယ်လောက်ဝယ်ခဲ့လဲဆိုတာကို GROUP BY နဲ့ SUM(), COUNT() တွေသုံးပြီး တွက်ထုတ်ပါမယ်။ HAVING ကိုသုံးပြီး 2 book ထက်ပိုပြီး ရေးထားတဲ့ author တွေကိုပဲ filter ထုတ်ပါမယ်။ နောက်ဆုံးမှာ price update, stock ပြင်ခြင်း၊ order ဟောင်းတွေ ဖျက်ခြင်းလို data maintenance task တွေလုပ်ပြီး frequently search လုပ်တဲ့ column ပေါ်မှာ index ထည့်ကာ project ကို ပြီးစီးအောင် ပိတ်ပါမယ်။
လက်တွေ့ ဆောက်ကြည့်မယ်
အရင်ဆုံး Author တစ်ယောက်စီ book ဘယ်နှစ်အုပ်ရေးထားလဲ COUNT() + GROUP BY AuthorID နဲ့ တွက်ပြီး HAVING COUNT(*) >= 2 နဲ့ filter လုပ်ပါ။ ပြီးရင် Customer တစ်ယောက်စီ စုစုပေါင်း ဘယ်လောက်ငွေသုံးခဲ့လဲ (Quantity * Price ရဲ့ SUM) ကို GROUP BY CustomerID နဲ့ ရှာပါ။ ပြီးတော့ Stock = 0 ဖြစ်နေတဲ့ 'Fantastic Beasts' ရဲ့ Stock ကို UPDATE နဲ့ 15 လို့ ပြင်ပါ။ 2025 ခုနှစ်ထက် ဟောင်းတဲ့ order data ရှိရင် DELETE FROM Orders WHERE OrderDate < '2026-01-01' နဲ့ ရှင်းပါ (mock data အတွက်ပါ)။ နောက်ဆုံး Books.Title column ပေါ်မှာ CREATE INDEX ထည့်ပြီး search speed မြှင့်ပါ။
Code နမူနာ
-- Authors who wrote 2 or more books
SELECT Authors.AuthorName, COUNT(Books.BookID) AS BookCount
FROM Authors
INNER JOIN Books ON Authors.AuthorID = Books.AuthorID
GROUP BY Authors.AuthorName
HAVING COUNT(Books.BookID) >= 2;
-- Total spending per customer
SELECT Customers.CustomerName, SUM(Orders.Quantity * Books.Price) AS TotalSpent
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID
INNER JOIN Books ON Orders.BookID = Books.BookID
GROUP BY Customers.CustomerName
ORDER BY TotalSpent DESC;
-- Restock a book
UPDATE Books SET Stock = 15 WHERE Title = 'Fantastic Beasts';
-- Clean up old order data
DELETE FROM Orders WHERE OrderDate < '2026-01-01';
-- Speed up title search
CREATE INDEX idx_book_title ON Books(Title);Author report က book 2 အုပ်ထက်ပိုရေးထားတဲ့ Murakami ကို ပြသပြီး customer spending report ကလည်း customer တစ်ယောက်စီ ဘယ်လောက်ငွေကုန်ခဲ့လဲကို အစဉ်လိုက် ပြသမှာဖြစ်ပါတယ်၊ Stock update + index ကလည်း error မတက်ဘဲ apply ဖြစ်သွားပါလိမ့်မယ်။၅ မိနစ် စမ်းကြည့်
Author တစ်ယောက်စီ ရေးထားတဲ့ book ရဲ့ average price ကို AVG() + GROUP BY AuthorID သုံးပြီး ထုတ်ကြည့်ပါ - 5 minutes အတွင်း စမ်းကြည့်ပါ။
သတိလေးတစ်ချက်
DELETE, UPDATE statement တွေကို production data ပေါ်မှာ run ခင် WHERE condition ကို SELECT နဲ့ အရင်စမ်းကြည့်ပါ - condition မှားရင် data အားလုံး ပျက်စီးနိုင်ပါတယ်။