SQL - Câu lệnh Group By
Xin chào các bạnfuture SQL wizards! Hôm nay, chúng ta sẽ cùng nhau khám phá một trong những công cụ mạnh mẽ nhất trong bộ công cụ SQL của chúng ta: câu lệnh GROUP BY. Là giáo viên máy tính gần gũi của bạn, tôi ở đây để hướng dẫn bạn trong hành trình này, từng bước một. Vậy, hãy lấy饮料 yêu thích của bạn, thoải mái ngồi xuống, và cùng nhau bắt đầu cuộc phiêu lưu thú vị với SQL nhé!
Câu lệnh GROUP BY trong SQL
Hãy tưởng tượng bạn đang tổ chức một thư viện khổng lồ. Bạn có rất nhiều sách rải rác khắp nơi, và bạn muốn sắp xếp chúng theo thể loại. Đó chính là điều mà câu lệnh GROUP BY làm trong SQL - nó giúp chúng ta tổ chức dữ liệu vào các nhóm logic, gọn gàng.
Câu lệnh GROUP BY được sử dụng để nhóm các hàng có cùng giá trị trong các cột được chỉ định. Nó thường được sử dụng cùng với các hàm tổng hợp để thực hiện các phép toán trên mỗi nhóm hàng.
Hãy bắt đầu với một ví dụ đơn giản:
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;
Trong truy vấn này, chúng ta đang nhóm nhân viên theo phòng ban và đếm số lượng nhân viên trong mỗi phòng ban. Điều này giống như hỏi, "Chúng ta có bao nhiêu sách trong mỗi thể loại?"
Câu lệnh GROUP BY với các hàm tổng hợp
Bây giờ, hãy làm cho mọi thứ trở nên thú vị hơn một chút. GROUP BY thực sự tỏa sáng khi chúng ta kết hợp nó với các hàm tổng hợp. Các hàm này thực hiện các phép toán trên một bộ giá trị và trả về một kết quả duy nhất. Một số hàm tổng hợp phổ biến bao gồm COUNT(), SUM(), AVG(), MAX() và MIN().
Dưới đây là bảng các hàm này và mục đích sử dụng của chúng:
Hàm | Mô tả |
---|---|
COUNT() | Đếm số lượng hàng |
SUM() | Tính tổng của một bộ giá trị |
AVG() | Tính trung bình của một bộ giá trị |
MAX() | Trả về giá trị lớn nhất trong một bộ |
MIN() | Trả về giá trị nhỏ nhất trong một bộ |
Hãy xem chúng trong hành động:
SELECT department,
COUNT(*) as employee_count,
AVG(salary) as avg_salary,
MAX(salary) as max_salary,
MIN(salary) as min_salary
FROM employees
GROUP BY department;
Truy vấn này cung cấp cho chúng ta rất nhiều thông tin về mỗi phòng ban: số lượng nhân viên, mức lương trung bình, mức lương cao nhất và thấp nhất. Đó giống như nhận được một báo cáo tổng quát về mỗi thể loại trong thư viện của chúng ta!
Câu lệnh GROUP BY trên một cột duy nhất
Đôi khi, chúng ta muốn tập trung vào chỉ một khía cạnh của dữ liệu. Giả sử chúng ta muốn biết số lượng nhân viên trong mỗi vị trí công việc:
SELECT job_title, COUNT(*) as employee_count
FROM employees
GROUP BY job_title;
Truy vấn này nhóm nhân viên theo vị trí công việc và đếm số lượng người trong mỗi vị trí. Điều này tương tự như đếm số lượng tiểu thuyết trinh thám, tiểu thuyết lãng mạn và tiểu thuyết khoa học viễn tưởng trong thư viện của chúng ta.
Câu lệnh GROUP BY với nhiều cột
Vậy tại sao dừng lại ở một cột? Chúng ta có thể nhóm theo nhiều cột để nhận được thông tin cụ thể hơn. Hãy nhóm nhân viên theo cả phòng ban và vị trí công việc:
SELECT department, job_title, COUNT(*) as employee_count
FROM employees
GROUP BY department, job_title;
Truy vấn này cho chúng ta biết số lượng nhân viên trong mỗi vị trí công việc trong mỗi phòng ban. Điều này giống như tổ chức sách trước theo thể loại, sau đó theo tác giả trong mỗi thể loại.
Câu lệnh GROUP BY với ORDER BY
Bây giờ, hãy thêm một chút thứ tự vào kết quả của chúng ta. Câu lệnh ORDER BY giúp chúng ta sắp xếp dữ liệu đã nhóm:
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department
ORDER BY employee_count DESC;
Truy vấn này nhóm nhân viên theo phòng ban, đếm số lượng họ, và sau đó sắp xếp kết quả theo thứ tự giảm dần của số lượng nhân viên. Chúng ta sẽ thấy các phòng ban có số lượng nhân viên nhiều nhất trước.
Câu lệnh GROUP BY với HAVING
Cuối cùng, hãy nói về câu lệnh HAVING. Trong khi WHERE lọc các hàng trước khi chúng được nhóm, HAVING lọc các nhóm tự thân. Điều này giống như nói, "Hiển thị cho tôi chỉ các thể loại có hơn 100 sách."
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department
HAVING employee_count > 50;
Truy vấn này chỉ hiển thị các phòng ban có hơn 50 nhân viên. Đây là một cách tuyệt vời để tập trung vào các phòng ban lớn hơn hoặc, trong ví dụ thư viện của chúng ta, các thể loại phổ biến hơn.
Và đó là tất cả, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của GROUP BY, từ việc sử dụng cơ bản đến các ứng dụng phức tạp hơn với nhiều cột, ORDER BY và các câu lệnh HAVING. Nhớ rằng, thực hành là cách tốt nhất để trở nên hoàn hảo, vì vậy đừng ngần ngại thử nghiệm các truy vấn này trên bộ dữ liệu của riêng bạn.
SQL có thể看起来 đáng sợ ban đầu, nhưng với thời gian và sự thực hành, bạn sẽ nhóm và tổng hợp dữ liệu như một chuyên gia. Ai biết được? Bạn thậm chí có thể bắt đầu nhìn nhận thế giới theo các nhóm và tổng hợp! (Chỉ đừng thử GROUP BY bạn bè của bạn tại các buổi tiệc - tin tôi đi, nó không hiệu quả.)
Tiếp tục mã hóa, tiếp tục học tập, và quan trọng nhất, tiếp tục vui vẻ với SQL!
Credits: Image by storyset