Bài viết này giải thích cách sử dụng các truy vấn giá trị hàng đầu và tổng truy vấn để tìm các ngày gần đây nhất hoặc sớm nhất trong một tập hợp các bản ghi. Điều này có thể giúp bạn trả lời nhiều câu hỏi kinh doanh khác nhau, chẳng hạn như thời điểm khách hàng đặt hàng lần cuối hoặc năm quý nào là tốt nhất cho doanh số của bạn, theo thành phố.
Trong bài viết này
Tổng quan
Bạn có thể xếp hạng dữ liệu và xem lại các mục được xếp hạng cao nhất bằng cách sử dụng truy vấn giá trị hàng đầu. Truy vấn giá trị hàng đầu là một truy vấn chọn trả về số hoặc phần trăm giá trị đã xác định từ đầu kết quả, ví dụ: năm trang phổ biến nhất trên website. Bạn có thể sử dụng một truy vấn giá trị hàng đầu đối với bất kỳ loại giá trị nào - chúng không nhất thiết phải là số.
Nếu bạn muốn nhóm hoặc tóm tắt dữ liệu của mình trước khi xếp hạng, bạn không cần phải sử dụng truy vấn giá trị hàng đầu. Ví dụ: giả sử bạn cần tìm số doanh số cho một ngày nhất định cho từng thành phố nơi công ty bạn hoạt động. Trong trường hợp đó, các thành phố sẽ trở thành các danh mục (bạn cần tìm dữ liệu cho mỗi thành phố), vì vậy bạn sử dụng truy vấn tổng.
Khi bạn sử dụng một truy vấn giá trị hàng đầu để tìm các bản ghi chứa ngày mới nhất hoặc sớm nhất trong một bảng hoặc nhóm bản ghi, bạn có thể trả lời một loạt các câu hỏi về kinh doanh, chẳng hạn như sau:
-
Ai đã làm cho việc bán hàng nhiều nhất gần đây?
-
Khách hàng đặt hàng lần cuối khi nào?
-
Khi nào là ba ngày sinh nhật tiếp theo trong nhóm?
Để tạo truy vấn giá trị hàng đầu, hãy bắt đầu bằng cách tạo truy vấn chọn. Sau đó, sắp xếp dữ liệu theo câu hỏi của bạn – cho dù bạn đang tìm kiếm ở trên cùng hay dưới cùng. Nếu bạn cần nhóm hoặc tóm tắt dữ liệu, hãy biến truy vấn chọn thành truy vấn tổng. Sau đó, bạn có thể sử dụng hàm tổng hợp, chẳng hạn như Max hoặc Min để trả về giá trị cao nhất hoặc thấp nhất hoặc Giá trị đầu tiên hoặc Cuối cùng để trả về ngày sớm nhất hoặc gần nhất.
Bài viết này giả định rằng các giá trị ngày mà bạn sử dụng có kiểu dữ liệu Ngày/Giờ. Nếu giá trị ngày của bạn nằm trong trường Văn bản, .
Cân nhắc việc sử dụng bộ lọc thay vì truy vấn giá trị hàng đầu
Thường thì bộ lọc sẽ tốt hơn nếu bạn đã ghi nhớ một ngày cụ thể. Để xác định xem bạn nên tạo truy vấn giá trị hàng đầu hay áp dụng bộ lọc, hãy cân nhắc những điều sau đây:
-
Nếu bạn muốn trả về tất cả các bản ghi có ngày trùng khớp, trước hoặc muộn hơn một ngày cụ thể, hãy sử dụng bộ lọc. Ví dụ: để xem ngày bán hàng từ tháng 4 đến tháng 7, bạn áp dụng bộ lọc.
-
Nếu bạn muốn trả về số lượng bản ghi đã xác định có ngày gần đây nhất hoặc gần nhất trong một trường và bạn không biết giá trị ngày chính xác hoặc chúng không quan trọng, bạn hãy tạo một truy vấn giá trị hàng đầu. Ví dụ: để xem năm quý doanh số tốt nhất, hãy sử dụng truy vấn giá trị hàng đầu.
Để biết thêm thông tin về cách tạo và sử dụng bộ lọc, hãy xem bài viết Áp dụng bộ lọc để xem các bản ghi được chọn trong cơ sở dữ liệu Access.
Chuẩn bị dữ liệu mẫu để làm theo cùng với các ví dụ
Các bước trong bài viết này sử dụng dữ liệu trong các bảng mẫu sau đây.
Bảng Nhân viên
|
Họ |
Tên |
Địa chỉ |
Thành phố |
CountryOrR egion |
Ngày Sinh |
Ngày tuyển dụng |
|
Barnhill |
Josh |
1 Main St. |
New York |
Hoa Kỳ |
Ngày 5 tháng 2 năm 1968 |
Ngày 10 tháng 6 năm 1994 |
|
Heloo |
Waleed |
52 1st St. |
Boston |
Hoa Kỳ |
Ngày 22 tháng 5 năm 1957 |
Ngày 22 tháng 11 năm 1996 |
|
Pica |
Guido |
3122 75th Ave. S.W. |
Seattle |
Hoa Kỳ |
Ngày 11 tháng 11 năm 1960 |
Ngày 11 tháng 3 năm 2000 |
|
Bánh mì tròn |
Jean Philippe |
1 Contoso Blvd. |
London |
Vương quốc Anh |
Ngày 22 tháng 3 năm 1964 |
Ngày 22 tháng 6 năm 1998 |
|
Giá |
Julian |
Calle Smith 2 |
Thành phố Mê-xi-cô |
Mexico |
Ngày 5 tháng 6 năm 1972 |
Ngày 05 tháng 1 năm 2002 |
|
Hughes |
Christine |
3122 75th St. S. |
Seattle |
Hoa Kỳ |
Ngày 23 tháng 1 năm 1970 |
Ngày 23 tháng 4 năm 1999 |
|
Riley |
Steve |
67 Big St. |
Tampa |
Hoa Kỳ |
Ngày 14 tháng 4 năm 1964 |
Ngày 14 tháng 10 năm 2004 |
|
Birkby |
Dana |
2 Mũi Pkwy |
Portland |
Hoa Kỳ |
Ngày 29 tháng 10 năm 1959 |
Ngày 29 tháng 3 năm 1997 |
Bảng EventType
|
TypeID |
Loại Sự kiện |
|
1 |
Ra mắt Sản phẩm |
|
2 |
Chức năng công ty |
|
3 |
Hàm Private |
|
4 |
Gây quỹ |
|
5 |
Triển lãm Thương mại |
|
6 |
Bài giảng |
|
7 |
Buổi hoà nhạc |
|
8 |
Triển lãm |
|
9 |
Hội chợ đường phố |
Bảng Customers
|
CustomerID |
Công ty |
Liên hệ |
|
1 |
Contoso, Ltd. Đồ họa |
Jonathan Haas |
|
2 |
Tailspin Toys |
Ellen Adams |
|
3 |
Fabrikam |
Carol Philips |
|
4 |
Đồ dùng mách nước |
Lucio Iallo |
|
5 |
A. Datum |
Mandar Samant |
|
6 |
Adventure Works |
Brian Burke |
|
7 |
Viện Thiết kế |
Bia jaka |
|
8 |
Trường Mỹ thuật |
Milena Duomanova |
Bảng Events
|
ID_sự_kiện |
Loại Sự kiện |
Khách hàng |
Ngày Sự kiện |
Giá |
|
1 |
Ra mắt Sản phẩm |
Contoso, Ltd. |
4/14/2011 |
$10,000 |
|
2 |
Chức năng công ty |
Tailspin Toys |
4/21/2011 |
$8.000 |
|
3 |
Triển lãm Thương mại |
Tailspin Toys |
01/05/11 |
$25.000 |
|
4 |
Triển lãm |
Viện Thiết kế Đồ họa |
5/13/2011 |
$4.500 |
|
5 |
Triển lãm Thương mại |
Contoso, Ltd. |
5/14/2011 |
$55.000 |
|
6 |
Buổi hoà nhạc |
Trường Mỹ thuật |
5/23/2011 |
$12,000 |
|
7 |
Ra mắt Sản phẩm |
A. Datum |
6/1/2011 |
$15.000 |
|
8 |
Ra mắt Sản phẩm |
Đồ dùng mách nước |
6/18/2011 |
$21,000 |
|
9 |
Gây quỹ |
Adventure Works |
6/22/2011 |
$1.300 |
|
10 |
Bài giảng |
Viện Thiết kế Đồ họa |
6/25/2011 |
$2.450 |
|
11 |
Bài giảng |
Contoso, Ltd. |
04/07/2011 |
$3.800 |
|
12 |
Hội chợ đường phố |
Viện Thiết kế Đồ họa |
04/07/2011 |
$5,500 |
Lưu ý: Các bước trong phần này giả định rằng bảng Khách hàng và Loại Sự kiện nằm ở phía "một" của mối quan hệ một-nhiều với bảng Events. Trong trường hợp này, bảng Events sẽ chia sẻ các trường CustomerID và TypeID. Các truy vấn tổng được mô tả trong các phần tiếp theo sẽ không hoạt động nếu không có các mối quan hệ đó.
Dán dữ liệu mẫu vào trang tính Excel
-
Khởi động Excel. Một sổ làm việc trống sẽ mở ra.
-
Nhấn SHIFT+F11 để chèn trang tính (bạn sẽ cần bốn trang).
-
Sao chép dữ liệu từ từng bảng mẫu vào một trang tính trống. Bao gồm đầu đề cột (hàng đầu tiên).
Tạo bảng cơ sở dữ liệu từ trang tính
-
Chọn dữ liệu từ trang tính đầu tiên, bao gồm đầu đề cột.
-
Bấm chuột phải vào Ngăn Dẫn hướng, rồi bấm Dán.
-
Bấm Có để xác nhận rằng hàng đầu tiên chứa đầu đề cột.
-
Lặp lại các bước từ 1-3 cho mỗi trang tính còn lại.
Tìm ngày gần đây nhất hoặc ít nhất
Các bước trong mục này sử dụng dữ liệu mẫu để minh họa cho quy trình tạo truy vấn giá trị hàng đầu.
Tạo truy vấn giá trị hàng đầu cơ bản
-
Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn.
-
Bấm đúp vào bảng Nhân viên, rồi bấm đóng.
Nếu bạn sử dụng dữ liệu mẫu, hãy thêm bảng Nhân viên vào truy vấn.
-
Thêm các trường bạn muốn sử dụng trong truy vấn vào lưới thiết kế. Bạn có thể bấm đúp vào từng trường hoặc kéo và thả từng trường vào một ô trống trong hàng Trường.
Nếu bạn sử dụng bảng mẫu, hãy thêm các trường Tên, Họ và Ngày Sinh.
-
Trong trường có chứa các giá trị trên cùng hoặc dưới cùng của bạn (trường Ngày Sinh, nếu bạn sử dụng bảng mẫu), hãy bấm vào hàng Sắp xếp và chọn Tăng dần hoặc Giảm dần.
Thứ tự sắp xếp giảm dần sẽ trả về ngày gần đây nhất và thứ tự sắp xếp Tăng dần trả về ngày sớm nhất.
Quan trọng: Bạn phải đặt giá trị trong hàng Sắp xếp chỉ cho các trường có chứa ngày của bạn. Nếu bạn xác định thứ tự sắp xếp cho một trường khác, truy vấn sẽ không trả về kết quả bạn muốn.
-
Trên tab Thiết kế, trong nhóm Công cụ, bấm vào mũi tên xuống bên cạnh Tất cả (danh sách Giá trị Hàng đầu), rồi nhập số bản ghi bạn muốn xem hoặc chọn một tùy chọn từ danh sách.
-
Bấm Chạy
để chạy truy vấn và hiển thị kết quả trong dạng xem Biểu dữ liệu. -
Lưu truy vấn dưới dạng NextBirthDays.
Bạn có thể thấy loại truy vấn giá trị hàng đầu này có thể trả lời các câu hỏi cơ bản, chẳng hạn như ai là người già nhất hoặc trẻ nhất trong công ty. Các bước tiếp theo sẽ giải thích cách sử dụng biểu thức và các tiêu chí khác để tăng sức mạnh và tính linh hoạt cho truy vấn. Tiêu chí được hiển thị trong bước tiếp theo sẽ trả về ba ngày sinh tiếp theo của nhân viên.
Thêm tiêu chí vào truy vấn
Các bước này sử dụng truy vấn được tạo trong thủ tục trước. Bạn có thể thực hiện theo cùng với một truy vấn giá trị hàng đầu khác miễn là truy vấn đó chứa dữ liệu Ngày/Giờ thực tế, không phải giá trị văn bản.
Mẹo: Nếu bạn muốn hiểu rõ hơn về cách truy vấn này hoạt động, hãy chuyển đổi giữa dạng xem Thiết kế và dạng xem Biểu dữ liệu ở mỗi bước. Nếu bạn muốn xem mã truy vấn thực tế, hãy chuyển sang dạng xem SQL. Để chuyển đổi giữa các dạng xem, hãy bấm chuột phải vào tab ở đầu truy vấn, rồi bấm vào dạng xem bạn muốn.
-
Trong Ngăn Dẫn hướng, bấm chuột phải vào truy vấn NextBirthDays, rồi bấm Dạng xem Thiết kế.
-
Trong lưới thiết kế truy vấn, trong cột bên phải Ngày_Sinh, nhập như sau:MonthBorn: DatePart("m",[Ngày_Sinh]).Biểu thức này trích xuất tháng từ Ngày_Sinh bằng cách sử dụng hàm DatePart .
-
Trong cột tiếp theo của lưới thiết kế truy vấn, nhập như sau:DayOfMonthBorn: DatePart("d",[BirthDate])Biểu thức này trích xuất ngày trong tháng từ Ngày_Sinh bằng cách sử dụng hàm DatePart .
-
Bỏ chọn các hộp kiểm trong hàng Hiển thị cho mỗi biểu thức trong hai biểu thức bạn vừa nhập.
-
Bấm vào hàng Sắp xếp cho từng biểu thức, rồi chọn Tăng dần.
-
Trong hàng Tiêu chí của cột Ngày Sinh, nhập biểu thức sau:Month([Birth Date]) > Month(Date()) OR Month([Birth Date])= Month(Date()) AND Day([Birth Date])>Day(Date())Biểu thức này thực hiện như sau:
-
Month( [Ngày Sinh]) > Month(Date()) xác định rằng ngày sinh của mỗi nhân viên sẽ rơi vào một tháng trong tương lai.
-
The Month([Birth Date])= Month(Date()) And Day([Birth Date])>Day(Date()) xác định rằng nếu ngày sinh xảy ra trong tháng hiện tại, sinh nhật sẽ rơi vào hoặc sau ngày hiện tại.
Nói ngắn gọn, biểu thức này loại trừ mọi bản ghi có ngày sinh trong khoảng từ ngày 1 tháng 1 đến ngày hiện tại.
Mẹo: Để biết thêm ví dụ về biểu thức tiêu chí truy vấn, hãy xem bài viết Ví dụ về tiêu chí truy vấn.
-
-
Trên tab Thiết kế , trong nhóm Thiết lập Truy vấn, nhập 3 vào hộp Trả về.
-
Trên tab Thiết kế, trong nhóm Kết quả, bấm vào Chạy
.
Lưu ý: Trong truy vấn của riêng bạn bằng cách sử dụng dữ liệu của riêng bạn, đôi khi bạn có thể nhìn thấy nhiều bản ghi hơn bạn đã xác định. Nếu dữ liệu của bạn chứa nhiều bản ghi có chung một giá trị nằm trong các giá trị hàng đầu, truy vấn của bạn sẽ trả về tất cả các bản ghi như vậy ngay cả khi điều đó có nghĩa là trả về nhiều bản ghi hơn mong muốn.
Tìm ngày gần đây nhất hoặc ít nhất cho các nhóm bản ghi
Bạn sử dụng truy vấn tổng để tìm ngày sớm nhất hoặc mới nhất cho các bản ghi thuộc các nhóm, chẳng hạn như các sự kiện được nhóm theo thành phố. Truy vấn tổng là một truy vấn chọn sử dụng các hàm tổng hợp (chẳng hạn như Nhóm Theo, Mtrong, Lớn nhất, Count, Đầu tiên và Cuốicùng) để tính toán giá trị cho từng trường đầu ra.
Bao gồm trường bạn muốn sử dụng cho thể loại – để nhóm theo – và trường có giá trị mà bạn muốn tóm tắt. Nếu bạn bao gồm các trường đầu ra khác – ví dụ: tên của khách hàng khi bạn đang nhóm theo loại sự kiện – truy vấn cũng sẽ sử dụng các trường đó để tạo nhóm, thay đổi kết quả sao cho chúng không trả lời câu hỏi ban đầu của bạn. Để đánh nhãn cho hàng bằng các trường khác, bạn tạo một truy vấn bổ sung sử dụng truy vấn tổng dưới dạng nguồn và thêm các trường bổ sung vào truy vấn đó.
Mẹo: Xây dựng truy vấn theo các bước là một chiến lược rất hiệu quả để trả lời các câu hỏi nâng cao hơn. Nếu bạn đang gặp khó khăn khi có được một truy vấn phức tạp để hoạt động, hãy cân nhắc xem liệu bạn có thể chia nhỏ truy vấn thành một chuỗi truy vấn đơn giản hơn hay không.
Tạo truy vấn tổng
Quy trình này sử dụng bảng mẫu Events vàbảng mẫu EventType để trả lời câu hỏi này:
Sự kiện gần đây nhất của mỗi loại sự kiện là khi nào, ngoại trừ các buổi hòa nhạc?
-
Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn.
-
Bấm đúp vào bảng Events và EventType. Mỗi bảng sẽ xuất hiện trong mục trên cùng của trình thiết kế truy vấn.
-
Bấm đúp vào trường EventType của bảng EventType và trường EventDate từ bảng Events để thêm các trường vào lưới thiết kế truy vấn.
-
Trong lưới thiết kế truy vấn, trong hàng Tiêu chí của trường EventType , nhập<> Hòa nhạc.
Mẹo: Để biết thêm ví dụ về biểu thức tiêu chí, hãy xem bài viết Ví dụ về tiêu chí truy vấn.
-
Trên tab Thiết kế, trong nhóm Hiển thị/Ẩn, bấm Tổng.
-
Trong lưới thiết kế truy vấn, bấm vào hàng Tổng của trường EventDate, rồi bấm Tối đa.
-
Trên tab Thiết kế, trong nhóm Kết quả, bấm Dạng xem và sau đó bấm Dạng xem SQL.
-
Trong cửa sổ SQL, ở cuối mệnh đề SELECT, ngay sau từ khóa AS, thay thế MaxOfEventDate bằng MostRecent.
-
Lưu truy vấn dưới dạng MostRecentEventByType.
Tạo truy vấn thứ hai để thêm nhiều dữ liệu hơn
Quy trình này sử dụng truy vấn MostRecentEventByType từ thủ tục trước đó để trả lời câu hỏi này:
Khách hàng tại sự kiện gần đây nhất của mỗi loại sự kiện là ai?
-
Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn.
-
Trên tab Truy vấn , bấm đúp vào truy vấn MostRecentEventByType.
-
Trên tab Bảng , bấm đúp vào bảng Events và bảng Customers.
-
Trong trình thiết kế truy vấn, bấm đúp vào các trường sau:
-
Trên bảng Events, bấm đúp vào EventType.
-
Trên truy vấn MostRecentEventByType, bấm đúp vào MostRecent.
-
Trên bảng Khách hàng, bấm đúp vào Công ty.
-
-
Trong lưới thiết kế truy vấn, trong hàng Sắp xếp của cột EventType , chọn Tăng dần.
-
Trên tab Thiết kế, trong nhóm Kết quả, bấm Chạy.