<< Chapter < Page Chapter >> Page >

EXCEPT ALL

(SELECT Customer_name

FROM Borrower);

Các hàm tính gộp

SQL có các hàm tính gộp (aggregate functions):

  • Tính trung bình (Average): AVG()
  • Tính min : MIN()
  • Tính max:MAX()
  • Tính tổng:SUM()
  • Đếm:COUNT()

Đối số của các hàm AVG và SUM phải là kiểu dữ liệu số

"Tìm số cân đối tài khoản trung bình tại chi nhánh Perryridge”

SELECT AGV(balace)

FROM Account

WHERE Branch_name = ‘Perryridge’;

SQL sử dụng mệnh để GROUP BY vào mục đích nhóm các bộ có cùng giá trị trên các thuộc tính nào đó

"Tìm số cân đối tài khoản trung bình tại mỗi chi nhánh ngân hàng”

SELECT Branch_name, AVG(balance)

FROM Account

GROUP BY Branch_name;

“Tìm số các người gửi tiền đối với mỗi chi nhánh ngân hàng”

SELECT Branch_name, COUNT(DISTINCT Customer_name)

FROM Depositor, Account

WHERE Depositor.Account_number = Account.Acount_number

GROUP BY Branch_name

Giả sử ta muốn liệt kê các chi nhánh ngân hàng có số cân đối trung bình lớn hơn 1200$. Điều kiện này không áp dụng trên từng bộ, nó áp dụng trên từng nhóm. Để thực hiện được điều này ta sử dụng mệnh đề HAVING của SQL

SELECT Branch_name, AVG(balance)

FROM Account

GROUP BY Branch_name

HAVING AGV(Balance)>1200$;

Vị từ trong mệnh đề HAVING được áp dụng sau khi tạo nhóm, như vậy hàm AVG có thể được sử dụng

“Tìm số cân đối đối với tất cả các tài khoản”

SELECT AVG(Balance) FROM Account;

“Đếm số bộ trong quan hệ Customer”

SELECT Count(*)FROM Customer;

SQL không cho phép sử dụng DISTINCT với COUNT(*), nhưng cho phép sử dụng DISTINCT với MIN và MAX.

Nếu WHERE và HAVING có trong cùng một câu vấn tin, vị từ sau WHERE được áp dụng trước. Các bộ thoả mãn vị từ WHERE được xếp vào trong nhóm bởi GROUP BY, mệnh đề HAVING (nếu có) khi đó được áp dụng trên mỗi nhóm. Các nhóm không thoả mãn mệnh đề HAVING sẽ bị xoá bỏ.

“Tìm số cân đối trung bình đối với mỗi khách hàng sống ở Harrison và có ít nhất ba tài khoản”

SELECT Depositor.Customer_name, AVG(Balance)

FROM Depositor, Account, Customer

WHERE Depositor.Account_number = Account.Account_number AND

Depositor.Customer_name = Customer.Customer_name AND

Customer.city =’Harrison’

GROUP BY Depositor.Customer_name

HAVING COUNT(DISTINT Depositor.Account_number)>= 3;

Các giá trị null

SQL cho phép sử dụng các giá trị null để chỉ sự vắng mặt thông tin tạm thời về giá trị của một thuộc tính. Ta có thể sử dụng từ khoá đặc biệt null trong vị từ để thử một giá trị null.

"Tìm tìm tất cả các số vay trong quan hệ Loan với giá trị Amount là null"

SELECT Loan_number

FROM Loan

WHERE Amount is null

Vị từ not null thử các giá trị không rỗng

Sử dụng giá trị null trong các biểu thức số học và các biểu thức so sánh gây ra một số phiền phức. Kết quả của một biểu thức số học là null nếu một giá trị input bất kỳ là null. Kết quả của một biểu thức so sánh chứa một giá trị null có thể được xem là false. SQL92 xử lý kết quả của một phép so sánh như vậy như là một giá trị unknown, là một giá trị không là true mà cũng không là false. SQL92 cũng cho phép thử kết quả của một phép so sánh là unknown hay không. Tuy nhiên, trong hầu khắp các trường hợp, unknown được xử lý hoàn toàn giống như false.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Hệ quản trị cơ sở dữ liệu. OpenStax CNX. Jul 31, 2009 Download for free at http://cnx.org/content/col10838/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Hệ quản trị cơ sở dữ liệu' conversation and receive update notifications?

Ask