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 MAX cũng th áp d ng cho các c t d li u 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 MAX cũng th áp d ng cho các c t d li u 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 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, n u không ượ ế
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 cái 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 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 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 đ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