Helpex - Trao đổi & giúp đỡ Đăng nhập

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Đối với một người đang học SQL, một trong những nơi phổ biến nhất để gặp khó khăn là khi học  GROUP BY lệnh. GROUP BY và  ORDER BY là hai từ khóa quan trọng trong SQL mà chúng tôi sử dụng để tổ chức dữ liệu. Sự khác biệt giữa  GROUP BY và  ORDER BY là điều đó  ORDER BY đơn giản hơn  GROUP BY và thường được giới thiệu sớm trong một khóa học SQL.

Đôi khi, mọi người khá nhầm lẫn về hai khái niệm này (SQL  ORDER BY vs.  GROUP BY), và lý do đằng sau sự nhầm lẫn này là do thiếu hiểu biết về cả hai khái niệm. Mặc dù cả hai đều được sử dụng để sắp xếp dữ liệu dựa trên các giá trị của chúng, nhưng các trường hợp sử dụng của chúng rất khác nhau. Nếu chúng ta học đúng cả hai khái niệm này, sự nhầm lẫn sẽ tự nhiên biến mất.

Trong bài viết này, tôi đã sử dụng một cơ sở dữ liệu thú vị được xuất bản  ở đây . Bộ dữ liệu bao gồm hơn 2000 loại bia thủ công và 500 nhà máy bia được sử dụng ở Hoa Kỳ. Dữ liệu được bao gồm trong tệp CSV, bạn có thể dễ dàng nhập vào bất kỳ cơ sở dữ liệu nào của mình bằng công cụ GUI. Một trong những đồng nghiệp của tôi đã chỉ ra  cách làm như vậy  trong một ví dụ về dữ liệu khảo sát của Học viện Vertabelo.

Bạn cũng có thể thích:  SQL DISTINCT và ORDER BY có liên quan như thế nào

Có hai bảng trong tập dữ liệu này:  beers và  breweries. Hãy xem tập dữ liệu mẫu từ  beers bảng để có hình dung rõ hơn về nó.

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

ĐẶT BỞI

Chủ đề đầu tiên của chúng tôi là  ORDER BY. Trước khi cố gắng hiểu sự khác biệt giữa  GROUP BY và  ORDER BY, hãy xem cách  SELECT hoạt động của lệnh.

Hãy  SELECT đặt tên, thành phố và tiểu bang từ mọi bản ghi trong  breweries bảng.

SELECT name, 

 city, 

 state 

FROM breweries

Khi bạn thực hiện lệnh trên, bạn sẽ nhận được một cái gì đó như sau:

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Bạn có thể thấy rằng các kết quả này không được sắp xếp theo tên của chúng. Thứ tự mặc định cho một  SELECT câu lệnh là không xác định, có nghĩa là thứ tự kết quả có thể khác nhau bất cứ lúc nào bạn chạy mã của mình.

Tuy nhiên, một trật tự không xác định thường không phải là những gì chúng ta muốn. Ví dụ: giả sử bạn muốn sắp xếp các kết quả theo thứ tự tăng dần hoặc giảm dần của state cột của chúng  ; trong trường hợp đó, bạn sẽ cần  ORDER BY lệnh. Tất cả những gì bạn phải làm là sử dụng  ORDER BY mệnh đề như sau:

SELECT name

city, 

state 

FROM    breweries 

ORDER BY state ASC

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Tương tự, bạn cũng có thể nhận được kết quả theo thứ tự giảm dần của trạng thái.

SELECT name

city, 

state 

FROM breweries

ORDER BY state DESC

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Bạn có thể xem các bản ghi được sắp xếp theo thứ tự giảm dần của trạng thái. Thứ tự mặc định của  ORDER BY lệnh là thứ tự tăng dần. Vì vậy, nếu bạn không sử dụng  ASC hoặc  DESC, kết quả sẽ tăng dần theo thứ tự.

Bạn có thể sử dụng  ORDER BY trong hai hoặc nhiều cột. Kiểm tra truy vấn sau:

SELECT name

 city, 

 state 

FROM breweries

ORDER BY state,

         city DESC

Truy vấn này đặt thứ tự đầu tiên dẫn đến thứ tự tăng dần của tiểu bang, tiếp theo là thứ tự giảm dần của thành phố.

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Bây giờ, điều thú vị là một người không biết sử dụng  GROUP BY nhiều có thể sử dụng  ORDER BY để phân tích dữ liệu. Ví dụ, giả sử rằng bạn muốn tìm xem có bao nhiêu nhà máy bia trong một khu vực nhất định  state. Những gì bạn có thể làm là nhận kết quả theo thứ tự của trạng thái của chúng. Điều này sẽ cung cấp cho bạn một kết quả được nhóm đẹp mà từ đó bạn có thể đếm thủ công số lượng nhà máy bia từ một cơ sở nhất định  state.

Do đó, một người không nắm chắc  GROUP BY có thể nghĩ rằng đó  ORDER BY là một cách tuyệt vời để nhóm cùng một dữ liệu. Ý kiến ​​đó không sai. Nếu bạn muốn hiển thị dữ liệu theo cách nhóm đẹp mắt, đó  ORDER BY là một lựa chọn tốt.

GROUP BY không phải là một cách để hiển thị dữ liệu theo nhóm, mà nó là một cách phân tích dữ liệu theo nhóm nhiều hơn. Để hiểu thêm về SQL  ORDER BY vs.  GROUP BY, chúng ta hãy xem xét  GROUP BY chi tiết hơn.

NHÓM THEO

Trong hầu hết các văn bản,  GROUP BY được định nghĩa như một cách để tập hợp các bản ghi theo các cột quy định cho phép bạn thực hiện chức năng tập hợp trên các cột không nhóm (ví dụ như  SUMCOUNTAVG, vv). Nói cách khác,  GROUP BY mục đích của mệnh đề là tóm tắt các kết hợp duy nhất của các giá trị cột.

Một vài ví dụ sẽ làm rõ hơn:

Hãy nhóm  beers bảng dựa trên  style cột.

SELECT style 

FROM beers 

GROUP BY style

Truy vấn SQL ở trên sẽ tạo ra kết quả sau

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Vì vậy, chúng ta hãy xem những gì đã xảy ra ở đây. Truy vấn này đã trả về một kết quả từ mỗi  style giá trị. Điều đó có nghĩa là SQL đầu tiên tạo các nhóm từ các style giá trị giống nhau  và trả về một hàng đại diện cho nhóm.

Và việc sử dụng chính xác là  GROUP BYgì? Tất nhiên, bạn có thể sử dụng  GROUP BY để tìm các giá trị khác biệt. Nhưng SQL có một  DISTINCT từ khóa dành riêng cho điều đó. Tầm quan trọng thực sự của  GROUP BY thể được nhìn thấy khi bạn sử dụng nó với chức năng tổng hợp như  SUM()COUNT(). Để hiểu rõ hơn, hãy thực thi truy vấn SQL sau:

SELECT style, 

 COUNT(Name

FROM beers 

GROUP BY style

Nó sẽ tạo ra kết quả sau:

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Ở đây, SQL đầu tiên nhóm các kết quả dựa trên  style cột. Sau đó, nó kiểm tra xem có bao nhiêu tên trong mỗi nhóm và trả về các  style giá trị và số lượng tên cho mỗi kiểu.

Nếu bạn quan sát kỹ, bạn có thể nhận thấy rằng các kết quả đã được sắp xếp theo thứ tự tăng dần. Tình huống này đôi khi đánh lừa mọi người tin rằng đó là  GROUP BY kết quả. Trên thực tế, không có gì đảm bảo rằng  GROUP BY sẽ hiển thị kết quả theo thứ tự tăng dần. Nếu bạn cần kết quả theo một thứ tự cụ thể, bạn phải tự làm như dưới đây:

SELECT style, 

COUNT(Name

FROM beers 

GROUP BY style 

ORDER BY style

Do đó,  GROUP BY hoạt động độc đáo cùng với  ORDER BY.

Như vậy, bây giờ bạn đã biết cách sử dụng  GROUP BY để đếm một tập giá trị thuộc một nhóm nào đó. Tôi sẽ cung cấp cho bạn hai ví dụ thực tế hơn để hiểu cách sử dụng  GROUP BY.

  1. Hãy nghĩ về một bảng nhân viên nơi bạn lưu trữ thông tin về nhân viên, chẳng hạn như tên, vai trò công việc và mức lương của họ. Mỗi nhân viên thuộc một bộ phận khác nhau, chẳng hạn như tài chính, CNTT hoặc vận tải. Bây giờ, giả sử bạn muốn nhận tổng tiền lương mà bạn đã trả cho nhân viên dựa trên bộ phận của họ. Bạn sẽ cần thực hiện một lệnh SQL như dưới đây:

    SELECT department,

     SUM(salary) 

    FROM employee 

    GROUP BY department

  2. Giả sử bạn có một trang web Thương mại điện tử bán một số loại sản phẩm. Trong cơ sở dữ liệu của bạn, bạn có một bảng để lưu trữ thông tin về cổ phiếu. Nếu bạn muốn tìm số lượng của từng loại sản phẩm, bạn có thể sử dụng hàm tổng hợp GROUP BY với COUNT:

    SELECT product_type, 

     COUNT(product_id) 

    FROM stock

    GROUP BY product_type

Chúng ta hãy học bài học này xa hơn một chút để nâng cao kiến ​​thức của bạn  GROUP BY. Bạn cũng có thể nhóm kết quả bằng cách sử dụng hai cột. Ví dụ, hãy nhóm  beers bảng dựa trên  style và  brewery_id.

SELECT style,

 brewery_id,

 COUNT(Name

FROM beers 

GROUP BY style,

   brewery_id

Truy vấn SQL này sẽ chia  style các nhóm hơn nữa bằng cách sử dụng  brewery_id. Khi bạn thực thi nó, bạn sẽ nhận được kết quả sau:

Sự khác biệt giữa GROUP BY và ORDER BY trong các từ đơn giản

Phần kết luận

Trong bài viết này, tôi đã giải thích sự khác biệt giữa  ORDER BY và  GROUP BYORDER BY sắp xếp dữ liệu dựa trên dữ liệu của một cột. Tất nhiên, do kết quả của việc sắp xếp, dữ liệu từ các giá trị giống nhau sẽ được tập hợp lại thành một nhóm, điều này sẽ giúp bạn dễ dàng phân tích thủ công sau này. Nhưng  GROUP BY là cách SQL để phân tích dữ liệu tương tự.

Không có việc sử dụng thực sự  GROUP BY mà không có các hàm tổng hợp. Đôi khi,  GROUP BY có thể trả về kết quả theo thứ tự được sắp xếp, nhưng bạn không nên dựa vào nó. Thứ tự mà kết quả được trả về là không xác định và phụ thuộc vào cách công cụ db thực hiện truy vấn.

Sau khi đọc bài viết này, bạn sẽ có thể sử dụng  GROUP BY và  ORDER BY tự tin hơn. Nếu bạn muốn trau dồi kiến ​​thức của mình về SQL  ORDER BY vs.  GROUP BY, hãy xem bộ thực hành này   - nó chứa một phần đặc biệt dành riêng cho chủ đề này.

Đọc thêm

Giới thiệu về Tham gia Đặt hàng

Tham gia Đặt hàng Phần 2: '' SQL ''

5 hữu ích 0 bình luận 24k xem chia sẻ

Có thể bạn quan tâm

loading