Xắp sếp kết quả trả về: ORDER BY
4.1 SQL Các hàm tổng hợp (ANSI):
Các hàm tổng hợp (ANSI): COUNT() SUM() AVG() MIN() MAX()
4.1 SQL
COUNT()
Đếm số lần xuất hiện của giá trị hoặc số dòng dữ liệu của bảng.
Ví dụ:
SELECT COUNT(Dept_no) FROM Staffs
⇒ Đếm số lượng nhân viên đã được gán giá trị Dept_no
SELECT COUNT(DISTINCT Dept_no) FROM Staffs
⇒ Đếm số lượng mã phòng sử dụng
SELECT COUNT(*) FROM Staffs
4.1 SQL
SUM()
Tính tổng giá trị của cột
Kiểu dữ liệu của cột phải là kiểu số
Đối số có thể là một biểu thức mà kết quả trả về là kiểu số.
Ví dụ:
SELECT SUM(pay) FROM Salary
⇒ Tính tổng giá trị cột pay trong bảng Salary
SELECT SUM(pay+1500) FROM Salary
4.1 SQL
AVG()
Tính trung bình cộng giá trị của cột
Kiểu dữ liệu của cột phải là kiểu số
Ví dụ:
SELECT AVG(pay) FROM Salary
4.1 SQL
MIN()
Lấy giá trị nhỏ nhất trong các giá trị của cột
Đối số có thể là một biểu thức
Ví dụ:
SELECT MIN(mark) FROM Marks
4.1 SQL
MAX()
Lấy giá trị lớn nhất trong các giá trị của cột
Đối số có thể là một biểu thức
Ví dụ:
SELECT MAX(mark) FROM Marks
4.1 SQL
Nhóm kết quả: GROUP BY
Các hàm tổng hợp ở trên tính toán dựa trên dữ liệu của các cột trong toàn bộ bảng (grant-totals)
Kết hợp các hàm tổng hợp với mệnh đề GROUP BY để tính toán kết quả theo nhóm (sub-totals).
Ví dụ:
SELECT MaSP, SUM(ThanhTien) FROM HoaDon GROUP BY MaSP
⇒ Trả ra danh sách mã sản phẩm cùng tổng số tiền bán được của mỗi sản phẩm từ bảng HoaDon
SELECT MaSV, AVG(Diem) FROM DiemThi GROUP BY MaSV
⇒ Trả ra danh sách mã sinh viên cùng với điểm trung bình cộng của các môn học mà SV đã thi.
4.1 SQL
Lọc nhóm: HAVING
Dùng với GROUP BY và các hàm tổng hợp
Chỉ lấy ra nhóm thỏa mãn điều kiện nào đó của kết quả hàm tổng hợp
Ví dụ:
SELECT MaSV, AVG(Diem) FROM DiemThi GROUP BY MaSV HAVING AVG(Diem)>=50
=> Lấy ra danh sách sinh viên và điểm trung bình của những sinh viên có điểm trung bình >=50
4.1 SQL
Liên kết bảng:
Lấy dữ liệu từ nhiều bảng
Xác định liên kết bằng điều kiện WHERE
Ví dụ:
SELECT SV.TenSV, Lop.TenLop FROM SV, Lop
⇒ Trả ra tích đề các của 2 bảng
SELECT SV.TenSV, Lop.TenLop FROM SV, Lop
WHERE SV.MaLop = Lop.MaLop
4.1 SQL
Liên kết bảng: INNER JOIN
SELECT SV.TenSV, Lop.TenLop
4.1 SQL
Truy vấn lồng nhau: nested query; sub query
Ví dụ:
SELECT * FROM SanPham WHERE MaSP = (SELECT MaSP FROM HoaDon Where MaNV=‘NV1’ AND NgayHD=’25-10-2006’)
⇒ Lấy ra thông tin về sản phẩm do nhân viên có mã ‘NV1’ bán vào ngày ’25-10-2006’. (Giả sử trong ngày hôm đó nhân viên ‘NV1’ chỉ bán được 1 sản phẩm)
SELECT * FROM SanPham WHERE MaSP IN (SELECT MaSP FROM HoaDon Where NgayHD=’25-10-2006’)
⇒ Lấy ra danh sách và thông tin về sản phẩm được bán vào ngày ’25-10- 2006’ bởi tất cả nhân viên.
4.1 SQL
SELECT * FROM Depts WHERE DeptCode IN
(SELECT DISTINCT DeptCode FROM Staffs)
4.1 SQL