24/05/2018, 17:32

Thực hành hàm kết hợp và gom nhóm

Hàm kết hợp Hàm count(), min(), max(), sum(), avg() Cú pháp của hàm COUNT : SELECT COUNT(tên_cột) FROM tên_bảng Hàm COUNT (*): ...

Hàm kết hợp

Hàm count(), min(), max(), sum(), avg()

Cú pháp của hàm COUNT :

SELECT COUNT(tên_cột) FROM tên_bảng

Hàm COUNT (*):

Hàm COUNT(*) trả về số lượng các dòng được chọn ở trong bảng.

Hàm COUNT (column):

Hàm COUNT(column) sẽ trả về số lượng các dòng có giá trị khác NULL ở cột được chỉ định.

Mệnh đề COUNT DISTINCT

Lưu ý: Các ví dụ dưới đây chỉ hoạt động với CSDL OracleMS SQL Server, không hoạt động trên MS Access (chưa thử nhiệm với các hệ CSDL khác!)

Từ khoá DISTINCT và COUNT có thể được dùng chung với nhau để đếm số lượng các kết quả không trùng nhau.

Cú pháp như sau:

SELECT COUNT(DISTINCT column(s)) As ‘Ten_cot’ FROM table

SQL có sẵn khá nhiều hàm để thực hiện đếm và tính toán.

Cú pháp:

Cú pháp để gọi hàm trong câu lệnh SQL như sau:

SELECT function(tên_cột) As FROM tên_bảng

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.

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.

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.

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.

Gom nhóm

Cú pháp

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

Điều kiện trên nhóm

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ảngGROUP BY tên_cộtHAVING SUM(tên_cột) điều_kiện giá_trị

1.Viết câu truy vấn SQL hiển thị tất cả các mặt hàng có số lượng nhập lớn nhất.

Hướng dẫn

- Sử dụng hàm Max để tìm số lượng của một đầu sách được nhập.

- Chỉ nhận về các bản ghi có số lượng nhập = số lượng max

Bài làm

Select * from tblDauSach

Where maDS IN ( select maDS

from tblPhieuNhap

where soLuong = max(soLuong));

2. Đếm số đầu sách có trong thư viện.

Hướng dẫn

Vì mỗi đầu sách có một mã đầu sách, do đó để đếm số đầu sách có trong thư viện ta chỉ cần đếm số lượng bản ghi có trong bảng tblDauSach.

Bài làm

Select count(maDS) as [Số lượng đầu sách]

From tblDauSach

3. Đếm số lượng đầu sách của tác giả ‘Quách Tuấn Ngọc’ có trong thư viện.

Hướng dẫn

Vì mỗi đầu sách có một mã đầu sách, do đó để đếm số đầu sách có trong thư viện ta chỉ cần đếm số lượng bản ghi có trong bảng tblDauSach thỏa mãn điều kiện có maTG là mã của tác giả ‘Quách Tuấn Ngọc’.

Lời giải

Select count(maDS) as [Số lượng đầu sách]

From tblDauSach

Where maTG in (select maTG from tblTacGia where tenTG = ‘Quách Tuấn Ngọc’)

3. Hiển thị số lượng sách của mỗi lĩnh vực có trong thư viện.

Hướng dẫn

Ta thực hiện gom nhóm số lượng đầu sách theo lĩnh vực.

Bài làm

Select maLV, sum(soLuong) as [Số Lượng]

From tblDauSach

Group by maLV;

III. Bài tập thực hành

Viết các câu truy vấn SQL thực hiện các yêu cầu sau:

  1. Hiển thị số lượng tác giả có sách trong thư viện.
  2. Hiển thị số lượng sách của mỗi tác giả có trong thư viện
  3. Hiển thị tác giả có nhiều đầu sách nhất thuộc lĩnh vực Công Nghệ Thông Tin.
  4. Hiển thị số lượng trung bình của các đầu sách có trong thư viện.
  5. Hiển thị đầu sách được mượn nhiều nhất trong năm 2008.
  6. Hiển thị Số lượng sách được trả trong ngày ‘3/9/2008’
  7. Hiển thị số lượng độc giả hiện có của thư viện.
  8. Hiển thị các nhà xuất bản có số lượng sách xuất bản lớn hơn số lượng sách của nhà xuất bản Kim Đồng.
  9. Hiển thị tất cả các đầu sách có số lượng nhập về lớn hơn số lượng nhập về của mọi quyển sách của nhà xuất bản Giao thông Vận tải.

Gợi ý: Trong SQL ‘Lớn hơn mọi’ có thể được biểu diễn bởi >ALL

  1. Hiển thị số lượng sách ‘Lập trình hướng đối tượng với C#’có trong thư viện.

11. Hiển thị số lượt người mượn sách vào năm 2007.

12. Hiển thị tất cả các sinh viên có mã số thẻ bắt đầu bằng xâu ‘101’

13. Hiển thị tổng số tiền đã sử dụng để nhập sách mới trong năm 2007.

Chú ý: Sinh viên thành tất cả các bài tập thực hành, cuối buổi nộp lại bài làm cho giáo viên các bài tập 1, 3, 4, 5, 9, 12

0