Cách dùng mệnh đề WHERE, GROUP BY, HAVING, ORDER BY ở SQL Excel

Ngày tạo 18/04/2022

 -  2.735 Lượt xem

Làm chủ bộ tứ mệnh đề cốt lõi trong SQL gồm WHERE (lọc dữ liệu gốc), GROUP BY (gom nhóm thống kê), HAVING (lọc sau gom nhóm) và ORDER BY (sắp xếp thứ tự) khi truy vấn dữ liệu báo cáo trên Excel VBA.

1.Câu lệnh WHERE

Dùng để lọc dữ liệu theo điều kiện cho trước. Sau where có thể kết hợp với các câu lệnh khác để sắp xếp và hiệu chỉnh dữ liệu.

Cú pháp:

TRUY VẤN SQLSQL Statement
SELECT col_1,…col_n FROM [Table_name$] WHERE col_name + toán tử (>/</=/LIKE/AND/OR/BETWEEN)

Lưu ý:

WHERE với data là số: không có cặp dấu nháy đơn bao quanh điều kiện

WHERE với data là chuỗi: có cặp dấu nháy đơn ‘’ bao quanh điều kiện

WHERE với data là thời gian: có cặp dấu #...# bao quanh điều kiện.

Với dữ liệu thời gian bạn hãy nhập theo đúng định dạng MM/DD/YYYY

Ví dụ:

TRUY VẤN SQLSQL Statement
SELECT PO_Number, Vendor_name FROM [PO_detail$] WHERE

PO_date BETWEEN #2020-01-01# AND #2020-31-10#

 Kết quả trả về là cột PO_Number, Vendor_name trong bảng PO_detail  có PO_date  từ 2020/1/1 đến 2020/31/10.

2.GROUP BY

GROUP BY: dùng để nhóm các dữ liệu sau khi thực hiện phép toán. Phải Group by tất cả các cột được chọn và KHÔNG Group by với các cột TÍNH TOÁN. Mỗi cột cách nhau bới dấu phẩy.

Cú pháp: SELECT col_1, sum(col_2) FROM [Table_name$] GROUP BY col_1

Trong đó Sum là phép tính có thể thay thế với các phép tính khác như (Sum, min, max, average,…)

3.HAVING

HAVING: Dùng để thêm điều kiện tính toán sau WHERE hoặc thay thế WHERE

Cú pháp:

TRUY VẤN SQLSQL Statement
SELECT col_1, sum (col_2) as Sumary FROM [Table_name$] GROUP  BY col_1 HAVING sum(col_2) >1000 Trong đó: sum(col_2) có tên là Sumary khi dùng Having với cột tính toán thì không được dùng tên.

Trong trường hợp trên nếu dùng HAVING Sumary sẽ bị lỗi.

4.ORDER BY

ORDER BY: dùng để sắp xếp dữ liệu sau khi tính toán.

Có 2 các sắp xếp:

Tăng dần: ASC

Giảm dần: DESC

Cú pháp:

TRUY VẤN SQLSQL Statement
SELECT col_1, sum col_2, col_3 FROM [Table_name$] WHERE….ORDER BY Col_1 ASC, col_3 DESC

Có thể ORDER BY nhiều cột, mỗi cột cách nhau bới dấu phẩy và sau tên cột sẽ có thuộc tính tang (ASC) hoặc giảm (DESC)

Nếu sau tên cột không truyền thuộc tính tang hoặc giảm thì SQL sẽ tự động hiểu rằng bạn sắp xếp tăng dần.

 

 

1.Câu lệnh WHERE

Dùng để lọc dữ liệu theo điều kiện cho trước. Sau where có thể kết hợp với các câu lệnh khác để sắp xếp và hiệu chỉnh dữ liệu.

Cú pháp:

TRUY VẤN SQLSQL Statement
SELECT col_1,…col_n FROM [Table_name$] WHERE col_name + toán tử (>/</=/LIKE/AND/OR/BETWEEN)

Lưu ý:

WHERE với data là số: không có cặp dấu nháy đơn bao quanh điều kiện

WHERE với data là chuỗi: có cặp dấu nháy đơn ‘’ bao quanh điều kiện

WHERE với data là thời gian: có cặp dấu #...# bao quanh điều kiện.

Với dữ liệu thời gian bạn hãy nhập theo đúng định dạng MM/DD/YYYY

Ví dụ:

TRUY VẤN SQLSQL Statement
SELECT PO_Number, Vendor_name FROM [PO_detail$] WHERE

PO_date BETWEEN #2020-01-01# AND #2020-31-10#

 Kết quả trả về là cột PO_Number, Vendor_name trong bảng PO_detail  có PO_date  từ 2020/1/1 đến 2020/31/10.

2.GROUP BY

GROUP BY: dùng để nhóm các dữ liệu sau khi thực hiện phép toán. Phải Group by tất cả các cột được chọn và KHÔNG Group by với các cột TÍNH TOÁN. Mỗi cột cách nhau bới dấu phẩy.

Cú pháp: SELECT col_1, sum(col_2) FROM [Table_name$] GROUP BY col_1

Trong đó Sum là phép tính có thể thay thế với các phép tính khác như (Sum, min, max, average,…)

3.HAVING

HAVING: Dùng để thêm điều kiện tính toán sau WHERE hoặc thay thế WHERE

Cú pháp:

TRUY VẤN SQLSQL Statement
SELECT col_1, sum (col_2) as Sumary FROM [Table_name$] GROUP  BY col_1 HAVING sum(col_2) >1000 Trong đó: sum(col_2) có tên là Sumary khi dùng Having với cột tính toán thì không được dùng tên.

Trong trường hợp trên nếu dùng HAVING Sumary sẽ bị lỗi.

4.ORDER BY

ORDER BY: dùng để sắp xếp dữ liệu sau khi tính toán.

Có 2 các sắp xếp:

Tăng dần: ASC

Giảm dần: DESC

Cú pháp:

TRUY VẤN SQLSQL Statement
SELECT col_1, sum col_2, col_3 FROM [Table_name$] WHERE….ORDER BY Col_1 ASC, col_3 DESC

Có thể ORDER BY nhiều cột, mỗi cột cách nhau bới dấu phẩy và sau tên cột sẽ có thuộc tính tang (ASC) hoặc giảm (DESC)

Nếu sau tên cột không truyền thuộc tính tang hoặc giảm thì SQL sẽ tự động hiểu rằng bạn sắp xếp tăng dần.

 

 

Web Admin

 
 
Gọi (028) 3514 2046