Gộp Kết Quả Với Lệnh Group By Trong Oracle
Có thể bạn quan tâm
Trong Oracle, lệnh Group By dùng kết hợp với lệnh SELECT để lấy dữ liệu, sau đó gộp dữ liệu lại theo một cột hoặc nhiều cột. Giống như lệnh DISTINCT, lệnh GROUP BY sẽ gộp dữ liệu trùng, tuy nhiên nó chỉ gộp dựa vào columns mà ta đã khai báo.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.1. Cú pháp lệnh Group By trong Oracle
Sau đây là cú pháp của lệnh Group By trong Oracle.
SELECT column1, column2, column3, ... FROM tables WHERE conditions GROUP BY column1, column2, column3, ...
Như vậy Group By sẽ đặt cuối cùng trong lệnh SELECT.
Có một lưu ý quan trọng, đó là các cột mà bạn muốn group by bắt buộc phải có trong select, bởi vì theo quy luật chạy thì bạn không select thì ở group by không có dữ liệu để gom nhóm.
Bài viết này được đăng tại [free tuts .net]
Ví dụ: ở group by mình có group theo name, city nên select phải có chọn cái đó.
SELECT city, name, SUM(sale) AS "Total sales" FROM salesdepartment GROUP BY city, name;
Khi sử dụng lệnh group by, nếu bạn sử dụng các hàm như SUM, COUNT ở các column có group by thì kết quả trả về là toàn bộ các records ở dạng gộp lại. Ví dụ hàm SUM thì trả về tổng tất cả giá trị các record, COUNT thì đêm số record.
2. Sử dụng Group By với hàm COUNT trong Oracle
Sau đây là một vài ví dụ, bạn hãy thực hành để hiểu rõ nó hơn nhé, vì đây là lệnh rất khó hiểu với những bạn mới học.
Trước tiên mình sẽ tạo một bảng CUSTOMERS bằng lệnh sau:
CREATE TABLE "CUSTOMERS" ( "NAME" VARCHAR2(4000), "AGE" NUMBER, "SALARY" NUMBER, "STATE" VARCHAR2(4000) )
Và mình đã thêm một số dữ liệu như sau:
Yêu cầu: Bây giờ mình muốn đếm tổng khách hàng của mỗi state có mức lương lớn hơn 1000.
Theo như yêu cầu thì kết quả sẽ trả về dạng như sau:
Như vậy ta sẽ group by theo state, và mỗi state sẽ đếm có bao nhiêu record, số record đó chính là tổng số khách hàng của state đó.
SELECT state, COUNT(*) AS "Number of customers" FROM customers WHERE salary > 10000 GROUP BY state;
3. Sử dụng Group By với hàm MIN/MAX trong Oracle
Mình sẽ đưa ra một ví dụ nữa để bạn tham khảo.
Giả sử mình có bảng employees như sau:
CREATE TABLE "EMPLOYEES" ( "EMP_ID" NUMBER, "NAME" VARCHAR2(4000), "AGE" NUMBER, "DEPARTMENT" VARCHAR2(4000), "SALARY" NUMBER )
Và đây là dữ liệu mẫu:
Bây giờ mình muốn lấy nhân viên có mức lương nhỏ nhất của từng phòng ban. Như vậy mình sẽ group by theo department và dùng hàm MIN tại salary ở lệnh select, hàm MIN sẽ chọn ra record có mức lương thấp nhất.
SELECT department, MIN(salary) AS "Lowest salary" FROM employees GROUP BY department;
Kết quả như sau:
Nếu bạn muốn chọn mức lương lớn nhất thì thay hàm MIN bằng hàm MAX.
SELECT department, MAX(salary) AS "Highest salary" FROM employees GROUP BY department;
Kết quả như sau:
4. Lời kết
Như vậy là mình đã giới thiệu xong lệnh Group by trong Oracle, đây là lệnh tương đối hay vì nó giúp bạn thống kê truy vấn khá tốt. Hy vọng bạn thực hành nhuần nhuyễn với lệnh này, nếu không bạn sẽ không thể đi làm được đâu nhé.
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
-
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
-
GROUP BY So Với ORDER BY - W3seo Phân Biệt Và So Sánh