Back to photostream

SQL – Nâng cao câu lệnh truy vấn qua FUNCTION, GROUP BY và ORDER BY (phần 4)

 

Với các kiến thức bài trước thì câu lệnh câu lệnh truy vấn cũng đã được hỗ trợ khá nhiều thứ như IN/EXISTS, LIKE, UNION và JOIN. Thì ở phần bài hôm nay, chúng ta cùng tiếp tục tìm hiểu các khái niệm khác, cũng sẽ hỗ trợ nhiều hơn cho câu lệnh truy vấn như là SQL FUNCTIONS, bộ đôi GROUP BY và HAVING, cuối cùng là ORDER BY.

 

1. Vai trò của FUNCTION, GROUP BY và ORDER BY trong SQL

 

Các từ khoá hôm nay cũng sẽ được sử dụng với câu lệnh SELECT để giúp truy xuất dữ liệu đa dạng hơn. Ta có thể thấy rõ ý nghĩa của các từ khoá này qua tên gọi của nó như FUNCTION là cách áp dụng hàm vào câu truy vấn, GROUP BY dùng để gộp nhóm các dòng dữ liệu, ORDER BY sử dụng để sắp xếp dữ liệu.

 

[Database] DML 4 (Part 3)

 

[Database] DML 4 (Part 2)

 

2. Ý nghĩa và cách sử dụng câu lệnh JOIN trong SQL

 

2.1. SQL FUNCTIONS

 

Mỗi DBMS sẽ có sư thay đổi về cú pháp SQL và bộ FUNCTIONS được sử dụng ở các SQL cũng sẽ có khác nhau đôi chút, hãy tham khảo FUNCTIONS ở MySQL:

 

www.w3schools.com/mysql/mysql_ref_functions.asp

 

Nếu bạn muốn sử dụng FUNCTION ở DBMS nào thì hãy tìm kiếm theo tên DBMS đó.

 

FUNCTION có 3 loại chính sau:

 

Dùng để xử lý chuỗi (String).

 

Dùng để xử lý số.

 

Thao tác với ngày, tháng, năm.

 

Và một số FUNCTION nâng cao.

 

Ví dụ

 

Muốn tính độ dài tên của mỗi bác sĩ.

 

SELECT last_name, CHAR_LENGTH(last_name)

 

FROM doctor;

 

Để liệt kê đầy đủ Họ và Tên các bác sĩ

 

SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) as full_name

 

FROM doctor;

 

2.2. Câu lệnh GROUP BY

 

Là câu lệnh để gộp nhóm các record có cùng giá trị column.

 

Thường được sử dụng chung với các hàm gộp (aggregate):

 

COUNT()

 

MAX()

 

MIN()

 

SUM()

 

AVG()

 

Cú pháp

 

SELECT column_name(s)

 

FROM table_name

 

WHERE condition

 

GROUP BY column_name(s)

 

ORDER BY column_name(s);

 

Ví dụ

 

Để lấy ra số lượng bác sĩ của mỗi chuyên khoa, thì thực hiện như bên dưới. Mình sử dụng GROUP BY để phân nhóm các bác sĩ cùng chuyên khoa, sau đó thực hiện đếm số lượng bác sĩ ở mỗi nhóm bằng cách dùng hàm COUNT.

 

SELECT specialization_id, COUNT(*)

 

FROM doctor

 

GROUP BY specialization_id;

 

2.3. Câu lệnh HAVING

 

Được sử dụng để chứa các điều kiện là hàm gộp.

 

Bởi vì WHERE không làm được điều này.

 

Cú pháp

 

SELECT column_name(s)

 

FROM table_name

 

WHERE condition

 

GROUP BY column_name(s)

 

HAVING condition

 

ORDER BY column_name(s);

 

Ví dụ

 

SELECT specialization_id, COUNT(*) quantity

 

FROM doctor

 

GROUP BY specialization_id

 

HAVING quantity >= 3;

 

Tiếp tục ví dụ ở phần 2, muốn lấy ra các chuyên khoa với nhiều hơn 3 bác sĩ thì kết hợp HAVING sau GROUP BY.

 

2.4. Câu lệnh ORDER BY

 

Câu lệnh để sắp xếp các records.

 

Với 2 điều kiện sắp xếp:

 

ASC: ascending (mặc định)

 

DESC: descending

 

Cú pháp

 

SELECT column1, column2, ...

 

FROM table_name

 

ORDER BY column1, column2, ... ASC|DESC;

 

Ví dụ

 

SELECT *

 

FROM doctor

 

ORDER BY date_of_birth DESC;

 

Câu lệnh trên dùng để lấy ra danh sách các bác sĩ theo thứ tự: ai lớn tuổi nhất thì hiển thị ra trước.

 

Kết luận

 

Với việc nắm được toàn bộ các câu lệnh được sử dụng với DML thì bạn có thể tự tin truy vấn thoải mái rồi, nếu phần nào chưa rõ thì có thể xem kĩ ở phần video.

 

ift.tt/6FqT3zU

 

Did you mean www.w3schools.c%c6%a1m/mysql/mysql_ref_functions.asp

 

Nguồn: codegym.vn/blog/2023/11/20/truy-van-qua-function-group-by...

19 views
0 faves
0 comments
Uploaded on November 20, 2023