Thống kờ dữ liệu với COMPUTE

Một phần của tài liệu tai lieu quy bo di thi tiec 13 (Trang 45 - 49)

Khi thực hiện thao tỏc thống kờ với GROUP BY, kết quả thống kờ (được sản sinh bởi hàm gộp) xuất hiện dưới một cột trong kết quả truy vấn. Thụng qua dạng truy vấn này, ta biết được giỏ trị thống kờ trờn mỗi nhúm dữ liệu nhưng khụng biết được chi tiết dữ liệu trờn mỗi nhúm

Vớ dụ 2.39: Cõu lệnh:

SELECT khoa.makhoa,tenkhoa,COUNT(malop) AS solop FROM khoa,lop

WHERE khoa.makhoa=lop.makhoa GROUP BY khoa.makhoa,tenkhoa

cho ta biết được số lượng lớp của mỗi khoa với kết quả như sau:

nhưng cụ thể mỗi khoa bao gồm những lớp nào thỡ chỳng ta khụng thể biết được trong kết quả truy vấn trờn.

Mệnh đề COMPUTE sử dụng kết hợp với cỏc hàm gộp (dũng) và ORDER BY trong cõu lệnh SELECT cũng cho chỳng ta cỏc kết quả thống kờ (của hàm gộp) trờn cỏc nhúm dữ liệu. Điểm khỏc biệt giữa COMPUTE và GROUP BY là kết quả thống kờ xuất hiện dưới dạng một dũng trong kết quả truy vấn và cũn cho chỳng ta cả chi tiết về dữ liệu trong mỗi nhúm. Như vậy, cõu lệnh SELECT với COMPUTE cho chỳng ta cả chi tiết dữ liệu và giỏ trị thống kờ trờn mỗi nhúm.

Mệnh đề COMPUTE …BY cú cỳ phỏp như sau:

COMPUTE hàm_gộp(tờn_cột) [,…, hàm_gộp (tờn_cột)] BY danh_sỏch_cột

Trong đú:

• Cỏc hàm gộp cú thể sử dụng bao gồm SUM, AVG, MIN, MAX và COUNT.

danh_sỏch_cột: là danh sỏch cột sử dụng để phõn nhúm dữ liệu

Vớ dụ 2.40: Cõu lệnh dưới đõy cho biết danh sỏch cỏc lớp của mỗi khoa và tổng số cỏc lớp của mỗi khoa:

SELECT khoa.makhoa,tenkhoa,malop,tenlop FROM khoa,lop WHERE khoa.makhoa=lop.makhoa

ORDER BY khoa.makhoa

COMPUTE COUNT(malop) BY khoa.makhoa

MAKHOA TENKHOA MALOP TENLOP DHT01 Khoa Toỏn cơ - Tin học C24101 Toỏn K24 DHT01 Khoa Toỏn cơ - Tin học C25101 Toỏn K25 DHT01 Khoa Toỏn cơ - Tin học C26101 Toỏn K26

CNT 3

MAKHOA TENKHOA MALOP TENLOP DHT02 Khoa Cụng nghệ thụng tin C26102 Tin K26 DHT02 Khoa Cụng nghệ thụng tin C25102 Tin K25 DHT02 Khoa Cụng nghệ thụng tin C24102 Tin K24

CNT 3

MAKHOA TENKHOA MALOP TENLOP DHT03 Khoa Vật lý C24103 Lý K24 DHT03 Khoa Vật lý C25103 Lý K25

CNT 2

MAKHOA TENKHOA MALOP TENLOP DHT05 Khoa Sinh học C25301 Sinh K25 DHT05 Khoa Sinh học C24301 Sinh K24

CNT 2

Khi sử dụng mệnh đề COMPUTE ... BY cần tuõn theo cỏc qui tắc dưới đõy:

• Từ khúa DISTINCT khụng cho phộp sử dụng với cỏc hàm gộp dũng

• Hàm COUNT(*) khụng được sử dụng trong COMPUTE.

• Sau COMPUTE cú thể sử dụng nhiều hàm gộp, khi đú cỏc hàm phải phõn cỏch nhau bởi dấu phẩy.

• Cỏc cột sử dụng trong cỏc hàm gộp xuất hiện trong mệnh đề COMPUTE phải cú mặt trong danh sỏch chọn.

• Khụng sử dụng SELECT INTO trong một cõu lệnh SELECT cú sử dụng COMPUTE.

• Nếu sử dụng mệnh đề COMPUTE ... BY thỡ cũng phải sử dụng mệnh đề ORDER BY. Cỏc cột liệt kờ trong COMPUTE … BY phải giống hệt hay là một tập con của những gỡ được liệt kờ sau ORDER BY. Chỳng phải cú cựng thứ tự từ trỏi qua phải, bắt đầu với cựng một biểu thức và khụng bỏ qua bất kỳ một biểu thức nào.

ORDER BY a, b, c

Thỡ mệnh đề COMPUTE BY với hàm gộp F trờn cột X theo một trong cỏc cỏch dưới đõy là hợp lệ:

COMPUTE F(X) BY a, b, c COMPUTE F(X) BY a, b COMPUTE F(X) BY a

Và cỏc cỏch sử dụng dưới đõy là sai:

COMPUTE F(X) BY b, c COMPUTE F(X) BY a, c COMPUTE F(X) BY c

• Phải sử dụng một tờn cột hoặc một biểu thức trong mệnh đề ORDER BY, việc sắp xếp khụng được thực hiện dựa trờn tiờu đề cột.

Trong trường hợp sử dụng COMPUTE mà khụng cú BY thỡ cú thể khụng cần sử dụng ORDER BY, khi đú phạm vi tớnh toỏn của hàm gộp là trờn toàn bộ dữ liệu.

Vớ dụ 2.41: Cõu lệnh dưới đõy hiển thị danh sỏch cỏc lớp và tổng số lớp hiện cú:

SELECT malop,tenlop,hedaotao FROM lop

ORDER BY makhoa

COMPUTE COUNT(malop)

kết quả của cõu lệnh như sau:

MALOP TENLOP HEDAOTAO C24101 Toỏn K24 Chớnh quy C25101 Toỏn K25 Chớnh quy C26101 Toỏn K26 Chớnh quy C26102 Tin K26 Chớnh quy C25102 Tin K25 Chớnh quy C24102 Tin K24 Chớnh quy C24103 Lý K24 Chớnh quy C25103 Lý K25 Chớnh quy C25301 Sinh K25 Chớnh quy C24301 Sinh K24 Chớnh quy CNT 10

Cú thể thực hiện việc tớnh toỏn hàm gộp dũng trờn cỏc nhúm lồng nhau bằng cỏch sử dụng nhiều mệnh đề COMPUTE … BY trong cựng một cõu lệnh SELECT

Vớ dụ 2.42: Cõu lệnh:

SELECT khoa.makhoa,tenkhoa,malop,tenlop FROM khoa,lop WHERE khoa.makhoa=lop.makhoa

ORDER BY khoa.makhoa

COMPUTE COUNT(malop) BY khoa.makhoa COMPUTE COUNT(malop)

Cho biết danh sỏch cỏc lớp của mỗi khoa, tổng số lớp theo mỗi khoa và tổng số lớp hiện cú với kết quả như sau:

MAKHOA TENKHOA MALOP TENLOP DHT01 Khoa Toỏn cơ - Tin học C24101 Toỏn K24 DHT01 Khoa Toỏn cơ - Tin học C25101 Toỏn K25 DHT01 Khoa Toỏn cơ - Tin học C26101 Toỏn K26

CNT 3

MAKHOA TENKHOA MALOP TENLOP DHT02 Khoa Cụng nghệ thụng tin C26102 Tin K26 DHT02 Khoa Cụng nghệ thụng tin C25102 Tin K25 DHT02 Khoa Cụng nghệ thụng tin C24102 Tin K24

CNT 3

MAKHOA TENKHOA MALOP TENLOP DHT03 Khoa Vật lý C24103 Lý K24 DHT03 Khoa Vật lý C25103 Lý K25

CNT 2

MAKHOA TENKHOA MALOP TENLOP DHT05 Khoa Sinh học C25301 Sinh K25 DHT05 Khoa Sinh học C24301 Sinh K24

CNT 2 CNT 10

Một phần của tài liệu tai lieu quy bo di thi tiec 13 (Trang 45 - 49)