MỞ ĐẦU
ORACLE TABLE
ORACLE QUERY
ORACLE CONDITION
ORACLE CLAUSES
ORACLE OPERATORS
ORACLE JOINS
ORACLE REFERENCE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Gộp kết quả với lệnh Group By trong Oracle

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.

1. Cú pháp lệnh Group By trong Oracle

Sau đây là cú pháp của lệnh Group By trong Oracle.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.

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:

groupby3 png

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:

groupby4 png

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:

groupby5 png

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:

groupby6 png

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:

groupby7 png

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é.

Cùng chuyên mục:

Hàm Hàm ASCII trong Oracle

Hàm Hàm ASCII trong Oracle

Cách sử dụng hàm Hàm ASCII trong 150

Hàm Hàm ASCIISTR trong Oracle

Hàm Hàm ASCIISTR trong Oracle

Cách sử dụng hàm Hàm ASCIISTR trong 150

Hàm Hàm CHR trong Oracle

Hàm Hàm CHR trong Oracle

Cách sử dụng hàm Hàm CHR trong 150

Hàm Hàm COMPOSE trong Oracle

Hàm Hàm COMPOSE trong Oracle

Cách sử dụng hàm Hàm COMPOSE trong 150

Hàm Hàm CONCAT trong Oracle

Hàm Hàm CONCAT trong Oracle

Cách sử dụng hàm Hàm CONCAT trong 150

Hàm Hàm CONVERT trong Oracle

Hàm Hàm CONVERT trong Oracle

Cách sử dụng hàm Hàm CONVERT trong 150

Hàm Hàm DECOMPOSE trong Oracle

Hàm Hàm DECOMPOSE trong Oracle

Cách sử dụng hàm Hàm DECOMPOSE trong 150

Hàm Hàm DUM trong Oracle

Hàm Hàm DUM trong Oracle

Cách sử dụng hàm Hàm DUM trong 150

Hàm Hàm INITCAP trong Oracle

Hàm Hàm INITCAP trong Oracle

Cách sử dụng hàm Hàm INITCAP trong 150

Hàm Hàm INSTR trong Oracle

Hàm Hàm INSTR trong Oracle

Cách sử dụng hàm Hàm INSTR trong 150

Hàm Hàm INSTR2 trong Oracle

Hàm Hàm INSTR2 trong Oracle

Cách sử dụng hàm Hàm INSTR2 trong 150

Hàm Hàm INSTR4 trong Oracle

Hàm Hàm INSTR4 trong Oracle

Cách sử dụng hàm Hàm INSTR4 trong 150

Hàm Hàm INSTRB trong Oracle

Hàm Hàm INSTRB trong Oracle

Cách sử dụng hàm Hàm INSTRB trong 150

Hàm Hàm INSTRC trong Oracle

Hàm Hàm INSTRC trong Oracle

Cách sử dụng hàm Hàm INSTRC trong 150

Hàm Hàm LENGTH trong Oracle

Hàm Hàm LENGTH trong Oracle

Cách sử dụng hàm Hàm LENGTH trong 150

Hàm Hàm LENGTH2 trong Oracle

Hàm Hàm LENGTH2 trong Oracle

Cách sử dụng hàm Hàm LENGTH2 trong 150

Hàm Hàm LOWER trong Oracle

Hàm Hàm LOWER trong Oracle

Cách sử dụng hàm Hàm LOWER trong 150

Hàm Hàm LPAD trong Oracle

Hàm Hàm LPAD trong Oracle

Cách sử dụng hàm Hàm LPAD trong 150

Hàm Hàm LTRIM trong Oracle

Hàm Hàm LTRIM trong Oracle

Cách sử dụng hàm Hàm LTRIM trong 150

Hàm Hàm NCHR trong Oracle

Hàm Hàm NCHR trong Oracle

Cách sử dụng hàm Hàm NCHR trong 150

Top