本文說明如何使用頂端值查詢和合計查詢,尋找一組記錄中的最近或最早日期。 這可協助您回答各種商務問題,例如客戶上次下單時間,或哪五季是最適合銷售的區/區。
本文內容
概觀
您可以使用頂端值查詢來排名資料,並查看排名最高的專案。 頂端值查詢是一種選取查詢,會從結果頂端,例如網站上五個最熱門的頁面,從結果頂端,回回指定的數值數目或百分比。 您可以使用頂端值查詢來查詢任何類型的值,它們不一定就是數位。
如果您想要先將資料分組或摘要,然後再進行排名,則不需要使用頂端值查詢。 例如,假設您需要尋找貴公司所經營之每個縣/市之給定日期的銷售數位。 在這種情況下,城市會變成類別 (您需要尋找每個城市/) 的資料,因此您可以使用合計查詢。
當您使用頂端值查詢尋找包含資料表或記錄群組中最新或最早日期的記錄時,您可以回答各種商務問題,例如:
-
誰最近銷售最多?
-
客戶最後一次下訂單是何時?
-
團隊的下三個生日何時?
若要建立頂端值查詢,請從建立選取查詢開始。 然後,根據問題排序資料,無論您是在尋找頂端或底部。 如果您需要將資料分組或摘要,請將選取查詢轉換為合計查詢。 接著,您可以使用匯總函數 ,例如Max或Min,以返回最高或最低的值,或使用 First 或Last來返回最早或最新的日期。
本文假設您使用的日期值具有日期/時間資料類型。 如果日期值在文字欄位中,.
考慮使用篩選而非熱門值查詢
如果您考慮的是特定日期,篩選通常會比較好。 若要判斷您是否應建立頂端值查詢或適用篩選,請考慮下列事項:
-
如果您想要將日期符合、晚于或晚于特定日期的所有記錄,請使用篩選。 例如,若要查看 4 月到 7 月之間的銷售日期,請進行篩選。
-
如果您想要退回指定數量且欄位中有最新或最新日期的記錄,而您不知道確切的日期值,或這些記錄不重要,您可以建立頂端值查詢。 例如,若要查看五個最佳銷售季度,請使用頂端值查詢。
有關建立及使用篩選的資訊,請參閱在 Access 資料庫中使用篩選來 查看選取的記錄一文。
準備要追蹤的範例資料與範例
本文中的步驟會使用下列範例資料表中的資料。
員工資料表
姓氏 |
名字 |
地址 |
城市 |
CountryOrR egion |
出生日期 |
雇用 日期 |
孫哲翰 |
沙東 |
1 Main St. |
New York |
Taiwan |
1968 年 2 月 5 日 |
10-Jun-1994 |
Heloo |
Waleed |
52 1st St. |
Boston |
Taiwan |
1957 年 5 月 22 日 |
22-Nov-1996 |
盧珮佳 |
Guido |
3122 75th Ave. S.W. |
Seattle |
Taiwan |
11-Nov-1960 |
11-Mar-2000 |
百 吉 餅 |
周立嬛 |
1 Contoso Blvd. |
London |
UK |
22-Mar-1964 |
22-Jun-1998 |
Price |
朱利安 |
Calle Smith 2 |
Mexico City |
墨西哥 |
05-Jun-1972 |
05-Jan-2002 |
休斯 |
克莉 絲 汀 |
3122 75th St. S. |
Seattle |
Taiwan |
23-Jan-1970 |
1999 年 4 月 23 日 |
萊利 |
史蒂夫 |
67 Big St. |
Tampa |
Taiwan |
14-Apr-1964 |
2004 年 10 月 14 日 |
Kby |
丹娜 |
2 Nosey Pkwy |
Portland |
Taiwan |
1959 年 10 月 29 日 |
29-Mar-1997 |
EventType 資料表
TypeID |
事件 類型 |
1 |
產品上市 |
2 |
公司函數 |
3 |
Private 函數 |
4 |
募款者 |
5 |
商展 |
6 |
演講 |
7 |
音樂會 |
8 |
展覽 |
9 |
街市集市 |
[客戶] 資料表
客戶識別碼 |
公司 |
連絡人 |
1 |
Contoso, Ltd. 圖形 |
有安納哈斯 |
2 |
Tailspin Toys |
Ellen Adams |
3 |
Fabrikam |
Carol Philips |
4 |
Wingtip Toys |
Lucio Iallo |
5 |
A. 基準 |
Mandar 3ant |
6 |
冒險工廠 |
Brian Burke |
7 |
設計學會 |
Jaka Stele |
8 |
美術學校 |
Milena Duomanova |
事件資料表
事件識別碼 |
事件 類型 |
客戶 |
活動 日期 |
Price |
1 |
產品上市 |
Contoso, Ltd. |
4/14/2011 |
$10,000 |
2 |
公司函數 |
Tailspin Toys |
4/21/2011 |
$8,000 |
3 |
商展 |
Tailspin Toys |
2011/5/1 |
$25,000 |
4 |
展覽 |
Graphic Design Institute |
5/13/2011 |
$4,500 |
5 |
商展 |
Contoso, Ltd. |
5/14/2011 |
$55,000 |
6 |
音樂會 |
美術學校 |
5/23/2011 |
$12,000 |
7 |
產品上市 |
A. 基準 |
6/1/2011 |
$15,000 |
8 |
產品上市 |
Wingtip Toys |
6/18/2011 |
$21,000 |
9 |
募款者 |
冒險工廠 |
6/22/2011 |
$1,300 |
10 |
演講 |
Graphic Design Institute |
6/25/2011 |
$2,450 |
11 |
演講 |
Contoso, Ltd. |
2011/7/4 |
$3,800 |
12 |
街市集市 |
Graphic Design Institute |
2011/7/4 |
$5,500 |
附註: 本節中的步驟假設「客戶」和「事件種類」資料表位於「事件」資料表的一對多關聯「一」端。 在這種情況下,事件資料表會共用 CustomerID 和 TypeID 欄位。 如果沒有這些關係,下一節所述的合計查詢將無法執行。
將範例資料貼到 Excel 工作表
-
啟動 Excel。 空白的活頁簿隨即開啟。
-
按 SHIFT+F11 插入工作表 (您需要四) 。
-
從每個範例資料表將資料複製到空白工作表。 包含欄標題 (欄標題的第一) 。
從工作表建立資料庫資料表
-
從第一個工作表選取資料,包括欄標題。
-
以滑鼠右鍵按一下功能窗格,然後按一下 [貼 上。
-
按一下 [是 >,確認第一列包含欄標題。
-
針對其餘的工作表重複步驟 1 到 3。
尋找最新或最近的日期
本節中的步驟會使用範例資料說明建立頂端值查詢的過程。
建立基本頂端值查詢
-
在 [建立] 索引標籤的 [查詢] 群組中,按一下 [查詢設計]。
-
按兩下 [員工> 資料表,然後按一下 [ 關閉。
如果您使用範例資料,請新增員工資料表至查詢。
-
將您想要用於查詢的欄位新增到設計格線線。 您可以按兩下每個欄位,或將每個欄位拖放至 [欄位列> 的空白 儲存格 上。
如果您使用範例資料表,請新增名字、姓氏和出生日期欄位。
-
在 [生日 (欄位包含您頂端或底端值的欄位中,如果您使用範例資料表) ,請按一下 [排序列,然後選取遞增或遞減。
遞減排序次序會回回最新的日期,而遞增排序次序會回回最早日期。
重要: 您必須只在包含日期的欄位的排序列設定值。 如果您為另一個欄位指定排序次序,查詢不會返回您想要的結果。
-
在[設計> 的[工具」 群組中,按一下 [頂端值 (清單) 旁的向下箭號,然後輸入您想要查看的記錄數目,或從清單中選取一個選項。
-
按一下 [ 執行
以執行查詢,然後以 [資料工作表視圖> 顯示結果。 -
將查詢儲存為 NextBirthDays。
您可以看到這種類型的熱門值查詢可以回答基本問題,例如公司中最年長或最聰明的人。 接下來的步驟將說明如何使用運算式和其他準則,為查詢增添功能與彈性。 下一個步驟中顯示的準則會返回下三個員工的生日。
新增準則至查詢
這些步驟會使用上述程式中所建立之查詢。 只要包含實際的日期/時間資料,而非文字值,就可以與不同的頂端值查詢一起追蹤。
提示: 如果您想要進一步瞭解此查詢如何運作,請在每個步驟中切換設計檢視和資料工作表視圖。 如果您想要查看實際的查詢程式碼,請切換至 SQL 視圖。 若要在視圖間切換,請以滑鼠右鍵按一下查詢頂端的索引鍵,然後按一下您想要的視圖。
-
在功能窗格中,以滑鼠右鍵按一下 NextBirthDays 查詢,然後按一下 [ 設計檢視。
-
在查詢設計格線中,在 BirthDate 右邊的欄中,輸入下列專案
:Month能:DatePart ("m",[BirthDate]) 。 此運算式使用 DatePart 函數從 BirthDate 解壓縮月份。 -
在查詢設計格線的下一欄中,輸入下列專案
:DayOfMonth一:DatePart ("d",[BirthDate]) 此運算式使用 DatePart 函數從 BirthDate解壓縮月份中的日期。 -
清除您剛才輸入的兩個運算式之每一個顯示列的核取方塊。
-
按一下每個 運算式 的 [排序列,然後選取 遞增。
-
在[生日]資料行的 [準則] 資料列中,輸入下列運算式
:Month ([Birth Date]) > Month (Date () ) or Month ([Birth Date]) = Month (Date () ) And Day ([Birth Date]) >Day (Date () ) 此運算式 會進行下列操作:-
月份 ( [生日]) >月份 (日期 () ) 指定每個員工的生日落在未來月份。
-
月份 ([生日]) = 月份 (日期 () ) And Day ([Birth Date]) >Day (Date () ) 指定如果出生日期出現在目前月份中,生日會落在當天當天或之後。
簡而言之,此運算式會排除生日介於 1 月 1 日到目前日期之間的任何記錄。
提示: 有關查詢條件運算式的更多範例,請參閱查詢 條件範例一文。
-
-
在設計索引鍵的查詢設定群組中,在 Return 方塊中輸入3。
-
在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]
。
附註: 在您自己的查詢中,使用您自己的資料,有時候可能會看到超過您指定的記錄。 如果您的資料包含多個記錄,而且共用的值位於頂端值之中,則查詢會返回所有這類記錄,即使這表示要退回的記錄超過您的要求。
尋找記錄群組的最近或最近日期
您可以使用合計查詢來尋找屬於群組之記錄的最早或最新日期,例如按城市分組的事件。 合計查詢是一種選取查詢,使用匯總函數 (例如 Group By、M、Max、Count、First和 Last) 來計算每個輸出欄位的值。
包含要用於類別的欄位 ,若要分組,以及包含要摘要之值的欄位。 如果您包含其他輸出欄位 ,例如,當您要根據事件種類分組時,客戶的名稱 ,查詢也會使用這些欄位來建立群組,變更結果,讓他們不會回答您的原始問題。 若要使用其他欄位為列加上標籤,您可以建立使用合計查詢做為來源的額外查詢,並新增其他欄位至該查詢。
提示: 以步驟建立查詢是回答進一步問題的有效原則。 如果您無法讓複雜的查詢生效,請考慮是否可以將查詢分成一系列更簡單的查詢。
建立合計查詢
此程式使用 Events 範例資料表 和 EventType 範例資料表 來回答問題:
每個事件種類的最新事件何時發生,但不包括排場活動?
-
在 [建立] 索引標籤的 [查詢] 群組中,按一下 [查詢設計]。
-
按兩下 [事件與事件種類資料表。
每個資料表會顯示在查詢設計工具的上方區段。 -
按兩下 EventType 資料表的 [EventType 欄位與 EventS 資料表的 EventDate 欄位,將欄位新增到查詢設計格線。
-
在查詢設計格線中,在EventType欄位的準則資料列,輸入<>。
提示: 有關準則運算式的更多範例,請參閱查詢 條件範例一文。
-
在 [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [合計]。
-
在查詢設計格線中,按一下[EventDate 欄位的合計列,然後按一下最大值。
-
在 [設計檢視>的 [結果群組中,按一下[視圖>,然後按一下[SQL View。
-
在 SQL 視窗中,在 SELECT 子句結尾的 AS 關鍵字之後,將MaxOfEventDate取代為MostRecent。
-
將查詢儲存為 MostRecentEventByType。
建立第二個查詢以新增更多資料
此程式使用先前程式中的 MostRecentEventByType 查詢來回答問題:
每個事件種類的最新事件客戶是誰?
-
在 [建立] 索引標籤的 [查詢] 群組中,按一下 [查詢設計]。
-
在 [ 查詢> 索引鍵 上,按兩下 MostRecentEventByType 查詢。
-
在 [ 資料表> 索引表中,按兩下事件資料表和客戶資料表。
-
在查詢設計工具中,按兩下下欄欄位:
-
在 [事件資料表上,按兩下 EventType。
-
在 MostRecentEventByType 查詢上,按兩下 [MostRecent。
-
在 [客戶」 資料表中,按兩下 [公司。
-
-
在查詢設計格線中,選取事件種類欄的排序列,選取遞增。
-
在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。