sort dữ liệu với Order by trong SQL
Giới thiệu Order by trong SQL

Như bạn đã biết, trong một đoạn script query, chúng ta có thể bắt gặp mệnh đề Order by ở cuối đoạn lệnh. Order by cho phép chúng ta kiểm soát kết quả được trả lại, ví dụ cột tên khách hàng trong kết quả được trả lại phải được sắp xếp theo thứ tự từ A – Z,… Nói một cách khác, Order By trong SQL không khác gì cách chúng ta sử dụng Sort trong Excel.

Logic và cách sử dụng mệnh đề Order by trong SQL

Để yêu cầu kết quả trả ra phải theo thứ tự cụ thể, chúng ta sẽ dùng câu lệnh Order by SQL với cú pháp như sau :
           SELECT
           FROM
           ORDER BY [ASC|DESC];

Chúng ta sẽ dùng bảng KHACHHANG để làm ví dụ cho bài học, nếu bạn muốn thực hành cùng có thể download bảng KHACHHANGđây nhé. Cú pháp như sau:

           SELECT *
           FROM KHACHANG
           ORDER BY DOANHSO
Nếu chúng ta không sort dữ liệu như ở hai câu lệnh đầu, bảng của chúng ta sẽ có kết quả trả lại không theo một thứ tự nào cả. Nhưng nếu thêm một mệnh đề ORDER BY DOANHSO, kết quả của chúng ta sẽ được sắp xếp theo thứ tự từ nhỏ đến lớn theo cột Doanh Số.

Lưu ý: chúng ta sẽ có hai cách để sort dữ liệu trong SQL,
        –   Nếu bạn muốn sort một cột theo giá trị từ A – Z hay từ giá trị nhỏ nhất đến giá trị lớn nhất, chúng ta có thể thêm chữ ASC sau cột muốn sort hoặc không thêm gì cả, SQL Server sẽ mặc định sort ASC

Ngược lại nếu bạn muốn sort data theo giá trị từ lớn nhất đến nhỏ nhất hoặc từ Z – A. Chúng ta chỉ cần thêm chữ DESC sau cột đó là được. Kết quả trả lại sẽ khác với bảng trên.

Chúng ta cũng có thể sort data theo nhiều cột cùng một lúc như hình sau. Cột đầu tiên sẽ được sort trước sau đó đến cột tiếp theo. Như mình muốn sort cột Doanh số từ thấp đến cao và độ tuổi từ nhỏ đến lớn để thống kê Khoảng tuổi nào sẽ sẵn sàng chi tiêu nhiều nhất.

Kết hợp các mệnh đề khác với Order by trong SQL

Trong một số trường hợp xử lý dữ liệu, chúng ta sẽ có lúc muốn giới hạn số dòng của kết quả trả lại. GNV sẽ giới thiệu bạn 3 mệnh đề thường sử dụng để giới hạn kết quả. 

1. Sử dụng mệnh đề TOP

Mệnh để TOP sẽ cho phép bạn chọn số dòng được trả lại. Thông thường chùng ta hay kết hợp sử dụng TOP với ORDER BY, nhưng nếu dữ liệu của chúng ta không được lọc theo điều kiện nào đó thì sử dụng TOP có thể trở nên vô nghĩa. Cú pháp như sau:

SELECT TOP (N) <column_list>
FROM <table_source>
WHERE <search_condition>
ORDER BY <order list> [ASC|DESC];

Bảng trên thống kê ra 5 khách hàng có giao dịch cao nhất trong bảng KHACHHANG.

2. Sử dụng mệnh đề PERCENT

Mệnh đề PERCENT cũng có cách dùng tương tự với TOP nhưng số câu lệnh được chọn sẽ không cố định như mệnh đề TOP mà sẽ phụ thuộc vào số lượng records trong bảng

SELECT TOP N PERCENT <column_name>
FROM <table_source>
WHERE <search_condition>
ORDER BY <order list> [ASC|DESC]P

Bảng trên thống kê ra Top 60 % khách hàng có giao dịch cao nhất trong bảng KHACHHANG.

Như vậy, bài này chúng ta đã làm quen với mệnh đề Order By trong SQL Server và Kết hợp sử dụng cùng với một  số mệnh đề khác để tạo ra những phân tích có ý nghĩa hơn. Hy vọng bài này sẽ giúp ích cho bạn trên con đường tự học SQL.
Nếu bạn muốn biết SQL có thể giúp bạn làm được gì thì đừng bỏ qua link này nhé.

Nội dung