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

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 1)

[Database] DML 4 (Part 3)

[Database] DML 4 (Part 2)

[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:

https://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.

https://www.w3schools.com/mysql/mysql_ref_functions.asp


Did you mean https://www.w3schools.cơm/mysql/mysql_ref_functions.asp

Download - Giáo trình thuật toán

7 + 10 =

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

9 + 9 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM