Tuesday, December 20, 2016

Mệnh đề GROUP BY mệnh đề HAVING trong SQL

Mệnh đề GROUP BY mệnh đề HAVING trong SQL



M?nh ?? GROUP BY…???c thêm vào SQL b?i vì các hàm t?p h?p (nh? SUM) tr? v? m?t t?p h?p c?a các giá tr? trong c?t m?i khi chúng ???c g?i, và n?u không có GROUP BY ta không th? nào tính ???c t?ng c?a các giá tr? theo t?ng nhóm riêng l? trong c?t.
Cú pháp c?a GROUP BY nh? sau:
SELECT tên_c?t, SUM(tên_c?t) FROM tên_b?ng GROUP BY tên_c?t
Ví d? s? d?ng GROUP BY:
Gi? s? ta có b?ng Sales nh? sau:
CompanyAmount
W3Schools5500
IBM4500
W3Schools7100
Câu l?nh SQL sau:
SELECT Company, SUM(Amount) FROM Sales
s? tr? v? k?t qu?:
CompanySUM(Amount)
W3Schools17100
IBM17100
W3Schools17100
K?t qu? tr? v? ? trên ?ôi khi không ph?i là cái mà ta mong ??i. Ta thêm m?nh ?? GROUP BY vào trong câu l?nh SQL:
SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
và k?t qu? tr? v? l?n này s? là:
CompanySUM(Amount)
W3Schools12600
IBM4500
K?t qu? này ?úng là cái mà ta mong mu?n.
HAVING
M?nh ?? HAVING…???c thêm vào SQL vì m?nh ?? WHERE không áp d?ng ???c ??i v?i các hàm t?p h?p (nh? SUM). N?u không có HAVING, ta không th? nào ki?m tra ???c ?i?u ki?n v?i các hàm t?p h?p.
Cú pháp c?a HAVING nh? sau:
SELECT tên_c?t, SUM(tên_c?t) FROM tên_b?ng
GROUP BY tên_c?t
HAVING SUM(tên_c?t) ?i?u_ki?n giá_tr?
Ta s? d?ng l?i b?ng Sales ? trên. Câu l?nh SQL sau:
SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
HAVING SUM(Amount) > 10000
s? tr? v? k?t qu?:
CompanySUM(Amount)
W3Schools12600


Available link for download