Nguyen thi huyen trang
Nguyen thi huyen trang PRO
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 74 lượt xem

SQL FOR VBA WITH SQL_SELECT...COUNT/SUM/AVG... GROUP BY...

May 14 2022

Xem tài liệu đính kèm VBA for SQL references hoặc VBA for connection with SQL

SELECT COUNT([tên cột]) 
hoặc SUM([tên cột]) hoặc AVG([tên cột]) AS [tên cột mới] 
FROM [tên bảng tính ] 
WHERE [điều kiện] GROUP BY [tên cột]

Câu lệnh này nghĩa là đếm các bản ghi từ một bảng tính hoặc tính tổng hoặc tính giá trị trung bình với 1 theo điều kiện nào đó hoặc là nhóm lại theo một đối tượng nhất định

LƯU Ý QUAN TRỌNG: KHI BẠN MUỐN LẤY RA CÁC CỘT THÔNG TIN NÀO ĐÓ THÌ GROUP BY CŨNG PHẢI LẤY RA TƯƠNG ỨNG CÁC TRƯỜNG ĐÓ. VÍ DỤ BÊN DƯỚI CHO THẤY NẾU BẠN MUỐN LẤY RA TRƯỜNG MÃ HÀNG VÀ TÊN HÀNG THÌ GROUP BY CŨNG PHẢI LẤY RA CỘT MÃ HÀNG VÀ TÊN HÀNG

Mời các bạn xem video thể hiện kết quả với SQL nhé

Bước 1: Đặt tên cho các bảng tính trong từng sheets phía dưới và tên các trường dữ liệu

Bước 2: Viết câu lệnh SQL theo cú pháp Select… Count [tên cột]

SELECT [State/Province], COUNT([State/Province]) AS [NUMERS OF PROVINCE] FROM [Customers] GROUP BY [State/Province]

TỪ KHÓA SELECT: Chọn các trường  [State/Province] và trường thứ  2 [Numbers of Province] (trường này do người sử dụng tự đặt tên và sẽ dùng bằng từ khóa AS)

TỪ KHÓA COUNT([State/Province]): đếm số lượng các tỉnh (các bang) trong bảng Danh Sách khách hàng (TỪ KHÓA FROM)

TỪ KHÓA GROUP BY: Nhóm theo đối tượng cụ thể là các tỉnh [State/Province]

Bước 3: Thực hiện câu lệnh SQL và kết quả sẽ thể hiện như sau

Tương tự như vậy ta có thể sử dụng với hàm SUM và hàm AVRAGE để tính ra tổng và giá trị trung bình của các yếu tố

Ví dụ sau đây sẽ: Hiện lên thông tin các trường Mã hàng, Tên Hàng, và tính tổng theo nhóm Mã hàng và tên hàng chỉ đối với điều kiện là những mặt hàng có tên là ‘Mắm cá’. (CÂU LỆNH SQL NÀY (SUM[TÊN CỘT]…. GROUP BY [TÊN CỘT]) TƯƠNG ĐƯƠNG VỚI CÂU LỆNH SUMIF TRONG EXCEL THUẦN TÚY)

SELECT [MA_HH] AS [Mã hàng], [HangHoa].[TEN_HH] AS [Tên Hàng], SUM([SO_TIEN]) AS [Tổng tiền] FROM [HangHoa] WHERE [HangHoa].[TEN_HH] LIKE '%Mắm cá%'  GROUP BY [MA_HH], [TEN_HH]

Nếu như dùng với SUMIF bạn sẽ phải làm 2 bước là nhóm lại mã hàng sang vùng khác (ví dụ bằng Remove duplication) rồi bạn đặt công thức Sumif để tính theo điều kiện Mã Hàng. 

Nếu bạn muốn lấy thêm trường thông tin Tên hàng từ Mã hàng, bạn lại phải sử dụng thêm hàm vlookup để hiện tên hàng; 

Thì giờ đây với 1 câu lệnh SQL như trên bạn muốn lấy ra bao nhiêu trường thông tin, nhóm bao  nhiêu hàng và đặt điều kiện với một loại hàng cụ thể (ví dụ trường hợp này là chỉ lấy ra mặt hàng bắt đầu bằng chữ “Mắm cá”) thì SQL sẽ hiện ra kết quả rất nhanh chóng chỉ với một thao tác ấn Enter là xong.  😊

Mình sẽ sử dụng thêm một ví dụ ứng dụng trong việc tính giá bình quân và số lượng trung bình theo từng lần nhập với 1 điều kiện mặt hàng nhất định

SELECT [MA_HH] AS [Mã hàng], [HangHoa].[TEN_HH] AS [Tên Hàng], AVG([SO_LUONG]) AS [Số lượng bình quân], SUM([SO_TIEN])/SUM([SO_LUONG]) AS [Đơn giá bình quân] FROM [HangHoa] WHERE [HangHoa].[SO_LUONG]>0 GROUP BY [MA_HH], [TEN_HH]

Kết quả sẽ hiện ra rất nhanh chóng cho tất cả các mặt hàng. Mình sẽ đối chiếu với 1 ví dụ về Mặt hàng ‘Bánh chưng’ (Mã VT0001) để so sánh kết quả của SQL nhé.

CẢM ƠN CÁC BẠN ĐÃ THEO DÕI

 

 

Cùng tham gia cộng đồng hỏi đáp về chủ đề Tin học văn phòng

Thảo luận 0 câu trả lời
Lượt xem 74 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội