SQL - Group By vs Order By
Xin chào các bạn đam mê SQL! Hôm nay, chúng ta sẽ cùng tìm hiểu về hai mệnh đề quan trọng trong SQL: Group By và Order By. Như một người giáo viên máy tính gần gũi, tôi rất vui được hướng dẫn các bạn qua những khái niệm này. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ cơ bản và dần dần nâng cao. Vậy, hãy lấy một tách cà phê (hoặc trà, nếu bạn thích), và cùng bắt đầu hành trình SQL của chúng ta nhé!
Mệnh đề SQL Group By
Group By là gì?
Mệnh đề Group By giống như một người tổ chức giúp bạn sắp xếp dữ liệu. Hãy tưởng tượng bạn có một tủ quần áo bừa bộn. Group By giúp bạn phân loại những món đồ vào từng đống ngăn nắp dựa trên một số đặc điểm nhất định - như màu sắc hoặc loại quần áo.
Trong thuật ngữ SQL, Group By cho phép bạn sắp xếp dữ liệu vào các nhóm dựa trên một hoặc nhiều cột. Điều này đặc biệt hữu ích khi bạn muốn thực hiện các phép toán hoặc tóm tắt trên các nhóm này.
Cú pháp cơ bản
Dưới đây là cấu trúc cơ bản của một mệnh đề Group By:
SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;
Hãy phân tích nó:
- Chúng ta SELECT các cột mà chúng ta muốn thấy trong kết quả.
- Chúng ta chỉ định bảng mà chúng ta lấy dữ liệu FROM.
- Phần GROUP BY cho biết SQL sẽ sử dụng các cột nào để nhóm.
Ví dụ 1: Nhóm doanh số theo sản phẩm
Hãy tưởng tượng chúng ta có một bảng叫做 sales
với các cột: product_name
, quantity_sold
, và sale_date
. Hãy nhóm doanh số của chúng ta theo sản phẩm:
SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name;
Truy vấn này sẽ hiển thị tổng số lượng bán ra cho mỗi sản phẩm. Dưới đây là những gì đang xảy ra:
- Chúng ta SELECT
product_name
và tổng củaquantity_sold
. - Chúng ta lấy dữ liệu này FROM bảng
sales
. - Chúng ta GROUP BY
product_name
, vì vậy SQL sẽ tạo một nhóm cho mỗi sản phẩm duy nhất.
Kết quả có thể trông như thế này:
product_name | total_sold |
---|---|
Apple | 150 |
Banana | 200 |
Orange | 175 |
Ví dụ 2: Nhóm theo nhiều cột
Chúng ta cũng có thể nhóm theo nhiều cột. Hãy giả sử chúng ta muốn nhóm doanh số theo cả sản phẩm và ngày:
SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date;
Truy vấn này nhóm doanh số của chúng ta theo cả sản phẩm và ngày, hiển thị tổng số lượng bán ra hàng ngày cho mỗi sản phẩm.
Mệnh đề SQL Order By
Order By là gì?
Nếu Group By là người tổ chức tủ quần áo, thì Order By giống như việc sắp xếp quần áo từ nhẹ nhất đến nặng nhất hoặc từ ngắn nhất đến最长. Nó tất cả về việc sắp xếp dữ liệu của chúng ta theo một thứ tự cụ thể.
Cú pháp cơ bản
Cấu trúc cơ bản của một mệnh đề Order By là:
SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];
- ASC có nghĩa là thứ tự tăng dần (nhỏ nhất đến lớn nhất, hoặc A đến Z).
- DESC có nghĩa là thứ tự giảm dần (lớn nhất đến nhỏ nhất, hoặc Z đến A).
- Nếu bạn không chỉ định, SQL sẽ giả định ASC là mặc định.
Ví dụ 3: Sắp xếp sản phẩm theo doanh số
Hãy sắp xếp các sản phẩm theo tổng doanh số:
SELECT product_name, SUM(quantity_sold) as total_sold
FROM sales
GROUP BY product_name
ORDER BY total_sold DESC;
Truy vấn này thực hiện như sau:
- Nhóm doanh số theo sản phẩm.
- Tính tổng số lượng bán ra cho mỗi sản phẩm.
- Sắp xếp kết quả từ cao đến thấp.
Kết quả có thể trông như thế này:
product_name | total_sold |
---|---|
Banana | 200 |
Orange | 175 |
Apple | 150 |
Ví dụ 4: Sắp xếp theo nhiều cột
Chúng ta cũng có thể sắp xếp theo nhiều cột:
SELECT product_name, sale_date, SUM(quantity_sold) as daily_total
FROM sales
GROUP BY product_name, sale_date
ORDER BY product_name ASC, daily_total DESC;
Truy vấn này:
- Nhóm doanh số theo sản phẩm và ngày.
- Sắp xếp trước theo tên sản phẩm (theo bảng chữ cái).
- Sau đó sắp xếp theo tổng số lượng bán ra hàng ngày trong mỗi nhóm sản phẩm (từ cao đến thấp).
So sánh Group By và Order By
Bây giờ chúng ta đã xem xét cả hai mệnh đề Group By và Order By, hãy so sánh chúng:
Tính năng | Group By | Order By |
---|---|---|
Mục đích | Tổ chức dữ liệu thành các nhóm | Sắp xếp dữ liệu theo thứ tự cụ thể |
Sử dụng | Sử dụng với các hàm tổng hợp | Có thể sử dụng với hoặc không có tổng hợp |
Kết quả | Giảm số lượng hàng (tóm tắt) | Không thay đổi số lượng hàng |
Vị trí | Đến trước ORDER BY trong truy vấn | Đến sau GROUP BY (nếu có) |
Chức năng | Tạo nhóm cho phép tính toán tổng hợp | Xác định thứ tự của các hàng đầu ra |
Khi nào nên sử dụng Group By
Sử dụng Group By khi bạn muốn:
- Tóm tắt dữ liệu (như tính tổng hoặc trung bình cho mỗi nhóm).
- Thực hiện các phép toán trên các nhóm dữ liệu.
- Giảm số lượng hàng trong kết quả của bạn.
Khi nào nên sử dụng Order By
Sử dụng Order By khi bạn muốn:
- Sắp xếp kết quả theo một thứ tự cụ thể (tăng dần hoặc giảm dần).
- Trình bày dữ liệu theo một thứ tự dễ đọc hoặc logic.
- Tìm các giá trị cao nhất hoặc thấp nhất trong bộ dữ liệu của bạn.
Ví dụ 5: Kết hợp Group By và Order By
Hãy kết hợp tất cả lại trong một ví dụ cuối cùng. Giả sử chúng ta muốn tìm ba sản phẩm bán chạy nhất mỗi tháng:
SELECT
EXTRACT(MONTH FROM sale_date) as month,
product_name,
SUM(quantity_sold) as total_sold
FROM
sales
GROUP BY
EXTRACT(MONTH FROM sale_date), product_name
ORDER BY
month ASC, total_sold DESC
LIMIT 3;
Truy vấn này:
- Nhóm doanh số theo tháng và sản phẩm.
- Tính tổng số lượng bán ra cho mỗi sản phẩm trong mỗi tháng.
- Sắp xếp kết quả theo tháng (tăng dần) và sau đó theo tổng số lượng bán ra (giảm dần).
- Giới hạn kết quả trong ba sản phẩm bán chạy nhất mỗi tháng.
Và thế là xong! Chúng ta đã cùng nhau khám phá qua các vùng đất của Group By và Order By. Nhớ rằng, thực hành là cách tốt nhất để hoàn thiện, vì vậy đừng ngại thử nghiệm các mệnh đề này trong các truy vấn của riêng bạn. Chúc các bạn may mắn với SQL, và dữ liệu của bạn luôn được tổ chức tốt và sıralı!
Credits: Image by storyset