
Các Hàm Trong SQL
SQL có s n khá nhi u hàm đ th c hi n đ m và tính toán.ẵ ề ể ự ệ ế
Cú pháp đ g i hàm trong câu l nh SQL nh sau:ể ọ ệ ư
Hàm AVG(column)
- Hàm AVG tr v giá tr trung bình tính theo c t đ c ch đ nh c a các dòng đ cả ề ị ộ ượ ỉ ị ủ ượ
ch n. Các giá tr NULL s không đ c xét đ n khi tính giá tr trung bình.ọ ị ẽ ượ ế ị
- Ví d :Câu l nh sau s tính s tu i trung bình c a nh ng ng i có tu i trên 20:ụ ệ ẽ ố ổ ủ ữ ườ ổ
SELECT AVG(Age) FROM Persons WHERE Age > 20
- K t qu tr v s là:39.5 ế ả ả ề ẽ Hàm MAX(column)
- Hàm MAX tr v giá tr l n nh t trong c t. Các giá tr NULL s không đ c xét đ n.ả ề ị ớ ấ ộ ị ẽ ượ ế
Ví dụ
SELECT MAX(Age) FROM Persons
- K t qu tr v : 45ế ả ả ề
Hàm MIN(column) - Hàm MAX tr v giá tr nh nh t trong c t. Các giá tr NULL sả ề ị ỏ ấ ộ ị ẽ
không đ c xét đ n.ượ ế
- Ví d :ụ
SELECT MIN(Age) FROM Persons
- k t qu tr v : 19ế ả ả ề
L u ý: ưHàm MIN và MAX cũng có th áp d ng cho các c t có d li u là chu i vănể ụ ộ ữ ệ ỗ
b n. D li u trong c t s đ c so sánh theo th t tăng d n c a t đi n ả ữ ệ ộ ẽ ượ ứ ự ầ ủ ừ ể Hàm
SUM(column)
- Hàm SUM tr v t ng giá tr c a c t. Các giá tr NULL s không đ c xét đ n.ả ề ổ ị ủ ộ ị ẽ ượ ế
Ví d :Tìm t ng s tu i c a t t c nh ng ng i có trong b ng:ụ ổ ố ổ ủ ấ ả ữ ườ ả
SELECT SUM(Age) FROM Persons
- K t qu tr v : 98 ế ả ả ề
- Ví d :Tìm t ng s tu i c a t t c nh ng ng i có tu i l n h n 20:ụ ổ ố ổ ủ ấ ả ữ ườ ổ ớ ơ
SELECT SUM(Age) FROM Persons WHERE Age > 20
- K t qu tr v : 79ế ả ả ề
SELECT function(tên_c t) ộFROM tên_b ngả
- B ng d li u chúng ta s dùng trong các ví s ti p theo:ả ữ ệ ẽ ụ ế
Name Age
Hansen, Ola 34

vendson, Tove 45
Pettersen, Kari 19
Hàm AVG(column)
- Hàm AVG tr v giá tr trung bình tính theo c t đ c ch đ nh c a các dòng đ cả ề ị ộ ượ ỉ ị ủ ượ
ch n. Các giá tr NULL s không đ c xét đ n khi tính giá tr trung bình.ọ ị ẽ ượ ế ị
- Ví d : Câu l nh sau s tính s tu i trung bình c a nh ng ng i có tu i trên 20:ụ ệ ẽ ố ổ ủ ữ ườ ổ
SELECT AVG(Age) FROM Persons WHERE Age > 20
- k t qu tr v s là: 39.5ế ả ả ề ẽ
Hàm MAX(column)
- Hàm MAX tr v giá tr l n nh t trong c t. Các giá tr NULL s không đ c xét đ n.ả ề ị ớ ấ ộ ị ẽ ượ ế
- Ví d :ụ
SELECT MAX(Age) FROM Persons
- K t qu tr v : 45ế ả ả ề
Hàm MIN(column)
- Hàm MIN tr v giá tr nh nh t trong c t. Các giá tr NULL s không đ c xét đ n.ả ề ị ỏ ấ ộ ị ẽ ượ ế
- Ví d :ụ
SELECT MIN(Age) FROM Persons
- K t qu tr v : 19ế ả ả ề
L u ý:ư Hàm MIN và MAX cũng có th áp d ng cho các c t có d li u là chu i vănể ụ ộ ữ ệ ỗ
b n. ả
D li u trong c t s đ c so sánh theo th t tăng d n c a t đi nữ ệ ộ ẽ ượ ứ ự ầ ủ ừ ể
Hàm SUM(column)
- Hàm SUM tr v t ng giá tr c a c t. Các giá tr NULL s không đ c xét đ n.ả ề ổ ị ủ ộ ị ẽ ượ ế
- Ví d : Tìm t ng s tu i c a t t c nh ng ng i có trong b ng:ụ ổ ố ổ ủ ấ ả ữ ườ ả
SELECT SUM(Age) FROM Persons
- K t qu tr v : 98ế ả ả ề
- Ví d : Tìm t ng s tu i c a t t c nh ng ng i có tu i l n h n 20:ụ ổ ố ổ ủ ấ ả ữ ườ ổ ớ ơ
SELECT SUM(Age) FROM Persons WHERE Age > 20
- K t qu tr v : 79ế ả ả ề
GROUP BY và HAVING

Các hàm t p h p (ví d nh SUM) thông th ng c n thêm ch c năng c a m nh đậ ợ ụ ư ườ ầ ứ ủ ệ ề
GROUP BY.
GROUP BY...
- 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:ả ử ả ư
Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100
- Câu l nh SQL sau:ệ
SELECT Company, SUM(Amount) FROM Sales
- S tr v k t qu :ẽ ả ề ế ả
Company Amount
W3Schools 17100
IBM 17100
W3Schools 17100
- 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à:ế ả ả ề ầ ẽ
Company Amount
W3Schools 12600
IBM 4500
- 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 :ẽ ả ề ế ả
Company Amount
W3Schools 12600
T khoá DISTINCTừ
T khoá DISTINCT đ c dùng đ l c ra các giá tr khác nhau.ừ ượ ể ọ ị
- Câu l nh SELECT s tr v thông tin v các c t trong b ng. Nh ng n u chúng taệ ẽ ả ề ề ộ ả ư ế
không mu n l y v các giá tr trùngố ấ ề ị nhau thì sau?
- V i SQL, ta ch c n thêm t khoá ớ ỉ ầ ừ DISTINCT vào câu l nh ệSELECT theo cú pháp sau:
SELECT DISTINCT tên_c t ộFROM tên_b ngả
Ví d : Tìm t t c các công ty trong b ng đ t hàngụ ấ ả ả ặ

- B ng đ t hàng c a ta nh sau:ả ặ ủ ư
Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798
Câu l nh SQL sau:ệ
SELECT Company
FROM Orders
S tr v k t qu :ẽ ả ề ế ả
Company
Sega
W3Schools
Trio
W3Schools
- Tên công ty W3Schools xu t hi n hai l n trong k t qu , đôi khi đây là đi u chúng taấ ệ ầ ế ả ề
không mu n.ố
Ví d : Tìm t t c các công ty khác nhau trong b ng đ t hàngụ ấ ả ả ặ
- Câu l nh SQL sau:ệ
SELECT DISTINCT Company
FROM Orders
S tr v k t qu :ẽ ả ề ế ả
Company
Sega