GROUP BY So Với ORDER BY - W3seo Phân Biệt Và So Sánh
Có thể bạn quan tâm
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.
Hướng dẫn khác:
- Mệnh đề ORDER BY trong SQL
- LAST trong SQL – hướng dẫn chi tiết
- Mệnh đề HAVING trong SQL
- Lệnh SELECT trong SQL – những điều cần biết
- Làm thế nào để sử dụng distinct trong SQL?
- SELECT COUNT trong SQL
Tóm tắt nội dung
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:
Cú pháp ORDER BY trong SQL dùng để sắp xếp kết quả trả về từ câu truy vấn SQL theo thứ tự tăng hoặc giảm dần theo một hoặc nhiều cột. Cú pháp cơ bản của ORDER BY như sau:
SELECT column1, column2, ... FROM table_name ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;Trong đó:
- column1, column2, … là các cột cần sắp xếp.
- ASC là từ khóa cho thứ tự tăng dần (mặc định), DESC là từ khóa cho thứ tự giảm dần.
- table_name là tên bảng cần truy vấn.
Ví dụ, nếu bạn muốn sắp xếp tất cả các dòng trong bảng employees theo tên nhân viên tăng dần, câu truy vấn sẽ như sau:
SELECT * FROM employees ORDER BY name ASC;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.
Cú pháp Group by trong SQL
Cú pháp GROUP BY trong SQL dùng để nhóm các dòng dữ liệu trong một bảng dữ liệu theo một hoặc nhiều cột. Khi sử dụng GROUP BY, các hàm tổng quát như SUM, AVG, COUNT, MIN và MAX có thể được sử dụng để tính toán giá trị cho mỗi nhóm.
Cú pháp cơ bản của GROUP BY như sau:
SELECT column1, aggregate_function(column2), ... FROM table_name GROUP BY column1;Trong đó:
- column1, column2, … là các cột cần truy vấn.
- aggregate_function là hàm tổng quát như SUM, AVG, COUNT, MIN hoặc MAX, để tính toán giá trị cho mỗi nhóm.
- table_name là tên bảng dữ liệu cần truy vấn.
Ví dụ, nếu bạn muốn tìm tổng số giờ làm việc cho mỗi nhân viên trong bảng employees, câu truy vấn sẽ như sau:
SELECT name, SUM(hours_worked) FROM employees GROUP BY name;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
- Nó được sử dụng để nhóm các hàng có cùng giá trị.
- Nó có thể được cho phép trong câu lệnh CREATE VIEW.
- Nó kiểm soát việc trình bày các hàng.
- Thuộc tính không được dưới hàm tổng hợp trong câu lệnh GROUP BY.
- Nó luôn được sử dụng trước mệnh đề ORDER BY trong câu lệnh SELECT.
- Bắt buộc phải sử dụng các hàm tổng hợp trong GROUP BY.
- Ở đâ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
- Nó sắp xếp tập kết quả theo thứ tự tăng dần hoặc giảm dần.
- Nó không được phép trong câu lệnh CREATE VIEW
- Nó kiểm soát việc trình bày các cột.
- Thuộc tính có thể nằm dưới hàm tổng hợp trong câu lệnh ORDER BY.
- Nó luôn được sử dụng sau mệnh đề GROUP BY trong câu lệnh SELECT.
- Không bắt buộc phải sử dụng các hàm tổng hợp trong ORDER BY.
- Ở đâ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.
Từ khóa » Câu Lệnh Group By
-
Câu Lệnh GROUP BY Trong SQL
-
Lệnh GROUP BY Trong SQL
-
Mệnh đề GROUP BY Trong SQL - Học Sql Cơ Bản đến Nâng Cao
-
Mệnh đề GROUP BY - Microsoft Support
-
Mệnh đề GROUP BY Trong SQL - GreenSQL
-
SQL Server: Các Lệnh Group By Trong SQL Server Có Thể Bạn Chưa Biết
-
Gộp Kết Quả Với Lệnh Group By Trong Oracle
-
Lệnh Group By Trong SQL Server
-
Câu Lệnh Group By Trong Sql
-
Câu Lệnh GROUP BY Trong SQL | Lập Trình Từ Đầu
-
Mệnh đề GROUP BY Trong SQL | Thủ Thuật Tin Học
-
Lệnh GROUP BY Trong SQL - Công Nghệ Lập Trình Học SQL
-
GROUP BY Trong MySQL | Nhóm Các Hàng Có Cùng Giá Trị Lại Với Nhau
-
[Thực Hành] Câu Lệnh GROUP BY