Rate this post

Bài viết này giải thích tổng quan đầy đủ về mệnh đề GROUP BY và ORDER BY. Chúng chủ yếu được sử dụng để tổ chức dữ liệu thu được bởi các truy vấn SQL. Sự khác biệt giữa các mệnh đề này là một trong những điểm phổ biến nhất khiến bạn gặp khó khăn khi học SQL. Sự khác biệt chính giữa chúng là mệnh đề GROUP BY có thể áp dụng khi chúng ta muốn sử dụng các hàm tổng hợp cho nhiều hơn một tập hợp hàng. Mệnh đề ORDER BY có thể áp dụng khi chúng ta muốn lấy dữ liệu thu được bởi một truy vấn theo thứ tự sắp xếp. Trước khi thực hiện so sánh, trước tiên chúng ta sẽ biết các mệnh đề SQL này.

Các bài viết liên quan:

Mệnh đề order by

Mệnh đề ORDER BY được sử dụng trong các truy vấn SQL để sắp xếp dữ liệu được trả về bởi một truy vấn theo thứ tự tăng dần hoặc giảm dần. Nếu chúng ta bỏ qua thứ tự sắp xếp, nó sẽ sắp xếp kết quả tóm tắt theo thứ tự tăng dần theo mặc định. Mệnh đề ORDER BY, giống như mệnh đề GROUP BY, có thể được sử dụng cùng với câu lệnh SELECT. ASC biểu thị thứ tự tăng dần, trong khi DESC biểu thị thứ tự giảm dần.

Sau đây là cú pháp để sử dụng mệnh đề ORDER BY trong câu lệnh SQL:

Hãy để chúng tôi hiểu cách hoạt động của mệnh đề ORDER BY với sự trợ giúp của ví dụ sau. Giả sử chúng ta có một nhà phát triển bảng chứa dữ liệu sau:

Chúng ta có thể thấy rằng các kết quả này không được hiển thị một cách có tổ chức. Giả sử chúng ta muốn tổ chức các kết quả theo thứ tự tăng dần hoặc giảm dần dựa trên cột trạng thái. Trong trường hợp đó, chúng ta sẽ cần lệnh ORDER BY để có được kết quả mong muốn. Chúng ta có thể làm điều này bằng cách thực hiện lệnh như sau:

Đây là kết quả mà chúng ta sẽ nhận được kết quả mong muốn:

Mệnh đề GROUP BY

Mệnh đề GROUP BY được sử dụng trong các truy vấn SQL để tổ chức dữ liệu có các giá trị thuộc tính giống nhau. Thông thường, chúng tôi sử dụng nó với câu lệnh SELECT. Luôn nhớ rằng chúng ta phải đặt mệnh đề GROUP BY sau mệnh đề WHERE. Ngoài ra, nó có nhịp độ trước mệnh đề ORDER BY.

Chúng ta thường có thể sử dụng mệnh đề này phối hợp với các hàm tổng hợp như SUM, AVG, MIN, MAX và COUNT để tạo báo cáo tóm tắt từ cơ sở dữ liệu. Điều quan trọng cần nhớ là thuộc tính trong mệnh đề này phải xuất hiện trong mệnh đề SELECT, không phải dưới một hàm tổng hợp. Nếu chúng tôi làm như vậy, truy vấn sẽ không chính xác. Do đó, mệnh đề GROUP BY luôn được sử dụng cùng với mệnh đề SELECT. Truy vấn cho mệnh đề GROUP BY là truy vấn nhóm và nó trả về một hàng duy nhất cho mỗi đối tượng được nhóm.

Sau đây là cú pháp để sử dụng mệnh đề GROUP BY trong câu lệnh SQL:

Hãy để chúng tôi hiểu cách hoạt động của mệnh đề GROUP BY với sự trợ giúp của một ví dụ. Ở đây chúng tôi sẽ chứng minh nó với cùng một bảng.

Giả sử chúng ta muốn biết mức lương trung bình của nhà phát triển ở một trạng thái cụ thể và sắp xếp kết quả theo thứ tự giảm dần dựa trên cột trạng thái. Trong trường hợp đó, chúng ta sẽ cần cả lệnh GROUP BY và ORDER BY để có được kết quả mong muốn. Chúng ta có thể làm điều này bằng cách thực hiện lệnh như sau:

Truy vấn này ban đầu hình thành một kết quả trung gian đã nhóm trạng thái. Tiếp theo, hàm AVG được thực hiện trên từng nhóm trạng thái, sau đó sắp xếp kết quả theo thứ tự giảm dần và cuối cùng, chúng ta sẽ nhận được kết quả mong muốn như hình dưới đây:

Sự khác biệt chính giữa GROUP BY và ORDER BY

Sau đây là những điểm khác biệt chính giữa mệnh đề Group By và Order By:

  • Mệnh đề Group By được sử dụng để nhóm dữ liệu dựa trên cùng một giá trị trong một cột cụ thể. Mặt khác, mệnh đề ORDER BY sắp xếp kết quả và hiển thị nó theo thứ tự tăng dần hoặc giảm dần.
  • Bắt buộc phải sử dụng chức năng tổng hợp để sử dụng Nhóm Theo. Mặt khác, không bắt buộc phải sử dụng hàm tổng hợp để sử dụng Order By.
  • Thuộc tính không thể nằm trong câu lệnh GROUP BY trong hàm tổng hợp, trong khi thuộc tính có thể nằm trong câu lệnh ORDER BY trong hàm tổng hợp.
  • Mệnh đề Group By kiểm soát việc trình bày các bộ giá trị có nghĩa là việc nhóm được thực hiện dựa trên sự giống nhau giữa các giá trị thuộc tính của hàng. Ngược lại, mệnh đề ORDER BY kiểm soát việc trình bày các cột có nghĩa là việc sắp xếp hoặc sắp xếp được thực hiện dựa trên các giá trị thuộc tính của cột theo thứ tự tăng dần hoặc giảm dần.
  • GROUP BY luôn được đặt sau mệnh đề WHERE nhưng trước mệnh đề ORDER BY. Mặt khác, ORDER BY luôn được sử dụng sau câu lệnh GROUP BY.

Biểu đồ so sánh của Group By và Order By 

Biểu đồ so sánh sau giải thích sự khác biệt chính của chúng một cách nhanh chóng:

GROUP BY

  1. Nó được sử dụng để nhóm các hàng có cùng giá trị. 
  2. Nó có thể được cho phép trong câu lệnh CREATE VIEW. 
  3. Nó kiểm soát việc trình bày các hàng.
  4. Thuộc tính không được dưới hàm tổng hợp trong câu lệnh GROUP BY. 
  5. Nó luôn được sử dụng trước mệnh đề ORDER BY trong câu lệnh SELECT. 
  6. Bắt buộc phải sử dụng các hàm tổng hợp trong GROUP BY. 
  7. Ở đây, việc phân nhóm được thực hiện dựa trên sự giống nhau giữa các giá trị thuộc tính của hàng. 

ORDER BY

  1. Nó sắp xếp tập kết quả theo thứ tự tăng dần hoặc giảm dần.
  2. Nó không được phép trong câu lệnh CREATE VIEW
  3. Nó kiểm soát việc trình bày các cột.
  4. Thuộc tính có thể nằm dưới hàm tổng hợp trong câu lệnh ORDER BY.
  5. Nó luôn được sử dụng sau mệnh đề GROUP BY trong câu lệnh SELECT.
  6. Không bắt buộc phải sử dụng các hàm tổng hợp trong ORDER BY.
  7. Ở đây, tập hợp kết quả được sắp xếp dựa trên các giá trị thuộc tính của cột, theo thứ tự tăng dần hoặc giảm dần.

Sự kết luận

Các mệnh đề GROUP BY và ORDER BY được so sánh trong bài viết này. Cả hai mệnh đề đều là các tính năng cơ sở dữ liệu SQL cực kỳ hữu ích. Khi chúng ta muốn tạo một nhóm các hàng, chúng ta sử dụng mệnh đề GROUP BY. Nếu chúng ta muốn tổ chức dữ liệu theo thứ tự tăng dần hoặc giảm dần dựa trên một cột cụ thể, chúng ta sử dụng mệnh đề ORDER BY. Họ không có bất kỳ mối quan hệ nào vì cả hai đều được sử dụng cho hai mục đích khác nhau. Tuy nhiên, chúng ta có thể kết hợp chúng để phục vụ một số mục đích đặc biệt hoặc có thể sử dụng riêng lẻ tùy trường hợp. Chúng ta chỉ có thể sử dụng các mệnh đề này với câu lệnh SELECT.

Trả lời

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 *

Contact Me on Zalo
Call now