本文說明如何在 Access 中使用頂端值查詢來尋找一組記錄中的最高或最低值。 您可以使用超值查詢來回答各種商務問題,例如哪些產品很暢銷,哪些銷售不好。

您想要做什麼?

瞭解最高價值查詢

當您需要尋找資料表欄位中包含頂端或底端值的記錄時,可以使用頂端值查詢。 您可以使用頂端值查詢來回答下列類型的問題。

  • 哪一種產品最貴或最貴?

  • 哪三位員工有下一個生日?

  • 哪些部門今年的銷售量最高或最低?

  • 哪些產品會占銷售額的前 5% 或最後 5% ?

  • 每種產品類別中的哪些產品會占銷售額的前 5% 或最後 5% ?

簡單來說,頂端值查詢會進行排序,然後篩選資料,以返回欄位中的頂端或底端值。 您可以使用頂端值查詢來搜尋數位 (包括貨幣) 和日期值。

建立頂端值查詢的過程遵循下列大步驟:

  • 建立選取查詢或合計查詢。

    您可以使用選取查詢來尋找資料表中的頂端或底端值。 您可以使用合計查詢來尋找一或多個類別中的頂端或底端值。 例如,如果您想要回答「什麼是最貴或最經濟的產品」這類問題,首先請建立選取查詢。 若要回答「我們每個產品類別中哪些產品占銷售額的前五%或最後五%」這類問題,請使用合計查詢。 此外,您可以使用任一類型的查詢來尋找一組記錄或屬於類別的記錄中的頂端和底端值。

  • 將排序次序適用于查詢。

  • 將其他準則適用于查詢。

  • 指定查詢要返回的記錄數目。 您可以指定百分比,例如欄位中前 5% 的值,或指定固定數位,例如欄位中前 10 個值。

選擇頂端值查詢與篩選

若要判斷您是否應建立頂端值查詢或適用篩選,請考慮下列事項:

  • 如果您想要將欄位中包含最高值或最低值的記錄退回,而且您不知道確切的頂端或底部域值 (或這些值都不重要) ,請建立頂端值查詢。

  • 如果您想要將欄位中的值符合的所有記錄,或小於或大於您感興趣的值,請申請篩選。 例如,若要查看價格介於 $50 到 $100 之間的產品,請進行篩選。 此圖說明查詢的設計檢視中的範例篩選,以及這類篩選會產生的結果:

    價格介於 $50 和 $100 之間的產品

    有關建立及使用篩選的資訊,請參閱在 Access 資料庫中使用篩選來 查看選取的記錄一文

建立及使用頂端值查詢的規則

繼續進行時,請記住,不論查詢類型 (選取查詢或合計查詢) ,都必須使用包含描述資料的欄位,例如員工或產品名稱,以及包含要尋找之頂端或底端值的欄位,例如價格或日期欄位。 您可以使用多個資料欄位,而如果您使用合計查詢,您的資料欄位通常應包含類別資訊,例如城市或國家/地區欄位。 只有在建立針對所有記錄的合計查詢時,才能省略類別資料,例如「顯示最貴訂單的前 5%」。 此外,您可以使用選取或合計查詢來尋找一組記錄或屬於類別的記錄中的頂端和底部值。 有關執行此工作之詳細資訊,請參閱本文稍後 的尋找類別或群組中記錄的頂端或底端值一節。

尋找包含頂端或底端值的記錄

本節中的步驟說明如何建立基本頂端值查詢和進一步查詢。 第一個步驟會示範頂端值查詢的基本部分,而第二節說明如何尋找接下來幾個員工的生日。 步驟使用下列範例資料表:

姓氏

名字

地址

城市

國家/地區

出生日期

雇用日期

孫哲翰

沙東

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

百 吉 餅

周立嬛

1 Contoso Blvd.

London

UK

22-Mar-1964

20-Jun-1998

您可以視需要手動在此範例表格中輸入資料,也可以將表格複製到試算表程式 ,例如 Microsoft Excel,然後將產生的工作表 Access。

附註: 如果您沒有試算表程式,您可以將範例資料複製到文字編輯器 ,例如記事本。 有關匯出文字資料的資訊,請參閱文字檔中資料的匯出 或連結一文

建立基本頂端值查詢

  1. 在 [建立] 索引標籤上,按一下 [查詢] 群組中的 [查詢設計]。

  2. 按一下要用於查詢的資料表,按一下 [新增 以將資料表放在設計格線線中,然後按一下 [關閉
    -或
    按兩下表格。
    如果您使用範例資料,請新增員工資料表至查詢。

  3. 將您想要用於查詢的欄位新增到設計格線線。 您可以按兩下每個欄位,或將每個欄位拖放至 [欄位列> 的空白 儲存格 上。
    如果您使用範例資料表,請新增名字、姓氏和出生日期欄位。

  4. 在 [生日 (欄位包含您頂端或底端值的欄位中,如果您使用範例資料表) ,請按一下 [排序列,然後選取遞增或遞減
    如果值欄位包含數位 ,例如價格或銷售數位,則遞增排序次序會回回最低的值,而遞減排序次序會返回最高值。 如果值欄位包含日期,遞減排序次序會返回最新的日期,而遞增會回回最早日期。

    重要: 您必須針對包含頂端或底端值的欄位,將排序列設為遞增或遞減。 如果您為包含頂端或底端值之欄位的欄位指定排序次序 ,例如 ProductName 而非 Price,查詢將不會返回您想要的結果。

  5. [設計索引鍵的查詢設定群組中,按一下 [傳回值清單 (頂端值清單) 旁的向下箭號,然後輸入您想要查看的記錄數目或百分比,或從清單中選取一個選項。

  6. 按一下 [ 執行以執行查詢,並顯示資料工作表視圖的結果。

  7. 儲存查詢並將其保持開啟,以用於接下來的步驟。

您可以看到這種類型的熱門值查詢可以回答基本問題,例如公司中最年長或最聰明的人。 接下來的步驟將說明如何使用運算式和其他準則,為查詢增添功能與彈性。 下一個步驟中顯示的準則會返回下三個員工的生日。

新增準則至查詢

附註: 這些步驟假設您要使用上一節所述的查詢。

  1. 在設計檢視中開啟您先前步驟所建立查詢。

  2. 在查詢設計格線中,在 [出生日期] 欄右邊的欄中,複製並貼上或輸入運算式Expr1:DatePart ("m",[Birth Date]) 。DatePart函數會解壓縮 Date 欄位中值的月份部分。

  3. 在包含運算式的欄右側,複製並貼上運算式運算式 Expr2:DatePart ("d",[Birth Date]) 。 在此案例中 ,DatePart 函數會從 Date 欄位中解壓縮值的日部分。

  4. 清除每個運算式之[顯示列的核取方塊,然後按一下每個運算式的排序儲存格,然後選取[遞增

  5. 您也可以指定準則以限制查詢的範圍。 當您指定準則時,查詢只會排序符合準則的記錄,並識別排序清單中頂端或底部的域值。
    若要繼續範例資料,在出生日期欄位的準則資料列,輸入或複製並貼上此運算式:

    Month ([Birth Date]) > Month (Date () ) or Month ([Birth Date]) = Month (Date () ) And Day ([Birth Date]) >Day (Date () )

    此運算式會執行下列操作:月份 ([BirthDate]) > Month (Date () ) 部分會檢查每個員工的生日,以查看是否落在未來的月份,如果為 True,則包含查詢中的那些記錄。 月 ([BirthDate]) = Month (Date () ) And Day ([BirthDate]) >Day (Date () ) 部分會檢查目前月份內發生的出生日期,以查看出生日期是否落在目前日期的當天或之後。 如果條件為 True,則函數會包含查詢結果中的那些記錄。 摘要來說,此運算式會忽略生日落在 1 月 1 日到您執行查詢之日期之間的任何記錄。

    若要查看查詢條件運算式的更多範例,請參閱查詢 條件範例一文

  6. [設計索引鍵的查詢設定群組中,按一下 [傳回值清單 (頂端值清單) 旁的向下箭號,然後輸入您想要查看的記錄數目或百分比,或從清單中選取一個選項。

  7. 按一下 [ 執行以執行查詢,並顯示資料工作表視圖的結果。

如果查詢所回的記錄超過預期

如果您的資料包含共用日期值的記錄,您的頂端值查詢可能會比您預期更多的資料。 例如,您可以設計頂端值查詢來取取三個員工記錄,但您實際上看到四個記錄,因為「萬能」和「周德華」共用生日。 不論有多少記錄有這些值,此類型的查詢會回回所有頂端值。 若要排除重複的值,您可以將名為 Unique Values 的屬性設為Yes。 有關使用該屬性的資訊,請參閱本文稍後的章節 :如果您看到重複的記錄。

姓氏

BirthDate

詹森

9/26/1968

Jacobsen

10/2/1970

愛德華茲

10/15/1965

威爾遜

10/15/1969

如果您的查詢所回的記錄比您預期少

假設您設計查詢以在欄位中返回前五個或最後五個記錄,但您只看到其中三個記錄。 根據規則,您可以在設計檢視中開啟查詢,並查看設計格線線中的準則資料列,以尋找比您預期更嚴格的準則,以解決這類問題。 有關準則的資訊,請參閱查詢 準則的範例一文

如果您看到重複的記錄

如果頂端值查詢會回報重複,可能是基礎資料表包含重複的記錄,或是記錄顯示為重複,因為查詢不包含可區分記錄的欄位。 例如,以下查詢會顯示最近出貨的五筆訂單,以及處理交易之銷售人員的名稱。

ShippedDate

銷售人員

11/12/2004

豐塔納

11/12/2004

莫雷諾

10/12/2004

Osada

10/12/2004

Osada

10/12/2004

豐塔納

第三個和第四個記錄看起來是重複的,但可能是因為銷售員 Osada 處理了兩個在同一天出貨的不同訂單。

根據您的需求,您可以執行兩項操作之一來避免重複的記錄。 您可以變更查詢的設計,以新增欄位來協助區分記錄,例如 OrderID 和 CustomerID 欄位。 或者,如果只要查看其中一個重複的記錄即可,您可以將查詢的 Unique Values 屬性設定為 Yes,以顯示唯一的記錄。 若要設定此屬性,請在查詢的設計檢視中按 F4 以顯示查詢的屬性工作表,找出Unique Values屬性,然後設為Yes。

有關處理重複記錄的資訊,請參閱使用查詢尋找 重複的記錄一文

頁面頂端

尋找類別或群組中記錄的頂端或底端值

您可以建立合計查詢,找出屬於群組之記錄的頂端或底端值。 繼續進行時,請記住,根據預設,合計查詢只能包含包含群組資料的欄位,例如「類別」欄位,以及有頂端或底端值的欄位,例如「價格」欄位。 合計查詢不能包含描述類別中專案的其他欄位。 不過,您可以建立第二個查詢,其中包含來自合計查詢的欄位,以及來自其他包含描述資料的資料表的欄位。

例如,假設您有一個產品目錄,而您將每個產品指派給一個類別,例如 Board Games、Gamess 等等。 如果您建立合計查詢來識別每個類別中最貴的產品,則查詢只能包含包含類別資料的一或多個欄位,以及包含價格資料的欄位。 在此範例中,假設有一個稱為類別名稱的欄位,以及一個稱為 Price 的欄位。 當您執行此類型的查詢時,Access 會根據您選擇) 的函數在 Price 欄位的開頭附加 "MaxOf" 或 "MinOf" (,如下所示:

類別名稱

MaxOfPrice

棋盤遊戲

$55.00

拼圖

$43.90

電腦遊戲

$263.50

娃娃

$81.00

...

...

您的合計查詢不能包含其他可協助描述產品 (因而讓資料更容易瞭解) 的欄位,例如產品名稱或供應商名稱,例如:

類別名稱

MaxOfPrice

產品名稱

供應商名稱

棋盤遊戲

$55.000

使用 C++ 樂趣

Proseware, Inc.

拼圖

$43.90

關係資料庫圖表

Lucerne 發佈

電腦遊戲

$263.50

電腦小動物與神秘的生物

Litware, Inc.

娃娃

$81.00

程式設計師動作圖

Contoso, Ltd

...

...

...

...

如果您想要查看描述資料,可以建立第二個選取查詢,將合計查詢中的欄位與其他資料欄位合併。

本節中的步驟說明如何建立合計查詢和選取查詢,以識別每組類別中最貴的產品。 步驟會假設使用下列範例資料表:

類別資料表

CategoryID

類別名稱

描述

1

棋盤遊戲

所有年齡和技能等級

2

拼圖

遊戲、文字遊戲、遊戲遊戲

3

電腦遊戲

所有主機和技能等級

4

娃娃

動作圖表、時尚小玩偶

5

運動設備

球、衣服、網

6

模型/嗜好

飛機、汽車、火車

供應商資料表

SupplierID

供應商名稱

1

Fabrikam

2

Tailspin Toys

3

Northwind Traders

4

冒險工廠

5

Lucerne 發佈

6

Proseware, Inc.

7

Contoso, Ltd

8

全球出口商品

9

Wingtip Toys

10

全球的入口企業

11

Litware, Inc.

12

South外埽影片

產品資料表

產品名稱

SupplierID

CategoryID

Price

程式設計師動作圖

7

4

$12.95

使用 C++ 樂趣

6

1

$15.85

關係資料庫圖表

5

2

$22.50

神奇的電腦晶片

3

2

$32.65

訪問! 遊戲!

1

1

$22.95

電腦小動物與神秘的生物

11

3

$78.50

電腦遊戲! The DVD!

4

5

$14.88

Ultimate Flying Pizza

2

5

$36.75

外接 5.25 英吋的磁片磁碟機 (1/4 縮放比例)

8

6

$65.00

Manager 非動作圖

9

4

$78.88

黑暗

12

3

$53.33

建立您自己的鍵盤

1

6

$77.95

附註: 步驟也會假設類別和產品資料表之間具有一對多關聯性,供應商與產品資料表之間也一樣。 在這種情況下,資料表會共用 SupplierID 和 CategoryID 欄位。 如果沒有這些關係,下一節描述的合計查詢將無法執行。

建立合計查詢

  1. 在 [建立] 索引標籤上,按一下 [查詢] 群組中的 [查詢設計]。

  2. 選取您處理的資料表,按一下 [新增,然後按一下 [關閉後完成新增資料表。
    -或按兩下您用的資料表,然後按一下
    [ 關閉。 每個資料表會出現在設計格線線中。 如果您使用上述的範例資料表,請新增類別和產品資料表。

  3. 按兩下要用於查詢的資料表欄位。
    此時,請確保只在查詢中新增群組欄位和值欄位。 如果您使用上一個資料表中列出的範例資料,請從類別資料表新增類別名稱欄位,以及從產品資料表新增價格欄位。

  4. 您也可以指定準則以限制查詢的範圍。
    只有符合準則的記錄會進行排序,而且會在此排序清單中識別頂端和底部的域值。 例如,若要排除 「運動」類別中的產品,您必須將此運算式新增到「類別名稱」欄位的 「準則」資料列:<>「運動」。
    若要查看查詢條件運算式的更多範例,請參閱查詢 條件範例一文

  5. 將查詢轉換為合計查詢。

    1. [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [合計]

      合計 會出現在設計格線線中。

  6. 請確定每個群組欄位的合計儲存格設為 Group By,然後將值欄位的合計儲存格 (包含頂端或底端值的欄位設為) Max 或Min。
    選取 Max 會返回數值欄位中的最大值,以及日期/時間欄位中的最新日期或時間值。 選取 Min 會回數值欄位中的最小值,以及日期/時間欄位中的最早日期或時間值。 如果您使用範例資料,將類別名稱欄位的合計儲存格設為群組將 Price 欄位的合計儲存格設為MaxMin。

  7. 在 [設計>索引鍵的 [工具」群組中,確定[退貨清單設定為全部設定,然後按一下 [執行時執行以執行查詢,然後在 [資料工作表視圖> 中顯示結果。

    附註: 根據步驟 7 中選擇的函數,Access 會變更查詢中值欄位的名稱至 MaxOfFieldName 或 MinOfFieldName。 如果您使用範例資料表,Access 會重新命名 MaxOfPriceMinOfPrice 欄位

  8. 儲存查詢並前往下一個步驟。

查詢不會退回產品名稱,或產品的其他相關資訊。 若要查看其他資料,您需要建立第二個包含您剛才建立之查詢的查詢。 下列步驟將說明如何建立此第二個查詢。

建立第二個查詢以查看更多資料

  1. 在 [建立] 索引標籤上,按一下 [查詢] 群組中的 [查詢設計]。

  2. 按一下 [查詢> 索引 鍵,然後按兩下您于上一節建立的總查詢。

  3. 按一下 [ 資料 表> 索引鍵,然後新增您用於合計查詢的資料表,以及包含您想要查看之其他相關資料的任何資料表。
    如果您使用先前列出的範例資料表,您可以在新查詢中新增類別、產品和供應商資料表。

  4. 將合計查詢中的欄位聯到父資料表中的對應欄位。 若要這麼做,請將合計查詢中的每個欄位拖曳至資料表中的對應欄位。

    如果您使用範例資料,請將合計查詢中的類別名稱欄位拖曳到類別資料表中的類別名稱欄位。 接著,將合計查詢中的 MaxOfPrice 欄位拖曳到 Products 資料表中的 Price 欄位。 聯聯會啟用新的選取查詢,以將合計查詢的資料與其他資料表中的資料結合。

  5. 在合計查詢的視窗中,按兩下星號,將整個查詢新增到設計格線線,然後從查詢中其他資料表拖曳其他欄位。

    如果您使用範例資料表,請按兩下在上一節建立的總和查詢,然後分別從 [產品與供應商資料表> 新增 [產品名稱與供應商欄位。

  6. 或者,為一或多個欄指定排序次序。
    例如,若要以字母順序列出類別,請設定類別名稱欄的排序儲存格為遞增

  7. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

    這會執行查詢,並會在資料工作表視圖中顯示結果。

提示: 如果您不希望價格欄標題顯示為MaxOfPriceMinOfPrice,請以設計檢視開啟查詢,然後于格線中的價格欄中輸入Price:MaxOfPricePrice:MinOfPrice。 如此一來 ,Price 會以資料工作表中的欄標題顯示。

頁面頂端

尋找包含頂端和底端值的記錄

您先前在本文中建立查詢可以返回頂端或底端值,但無法同時返回兩者。 如果您想要在單一視圖中查看這兩組值,您需要建立兩個查詢 ,一個會取回頂端值,另一個會取回最下方值,然後合併並儲存結果到單一資料表中。

尋找頂端和底端值,以及將資料顯示在表格中的過程,遵循下列大步驟:

  • 建立頂端值查詢和底端值查詢,或者如果您需要將資料分組,則建立使用 Min 和 Max 函數的 合計 查詢。

  • 將頂端值查詢 (或最大值查詢) 產生資料表查詢,然後執行此查詢以建立新資料表。

  • 將您的底值查詢 (或 Min 合計查詢) 查詢轉換為新增查詢,然後執行此查詢,將記錄附加到頂端值資料表。

    這些小節中的步驟說明如何建立查詢。

    附註: 除非資料庫已進行數位簽章或位於信任的位置,否則 Access 會阻止您執行此處所述的動作查詢。 在您嘗試建立生成表並附加此處所述的查詢之前,請遵循第一組步驟來啟用任何封鎖的內容。

    啟用資料庫中的內容

    • 在 [訊息列] 上,按一下 [啟用內容]

    • 再次執行查詢。

  • 建立頂端和底部的值查詢。

    有關建立頂端或底端值查詢所需的步驟,請參閱本文稍早所 說明的尋找有頂端或底部值的記錄一節。 如果您需要根據類別將記錄分組,請參閱本文稍早所說明 的尋找類別或群組中記錄的頂端或底端值一節。

  • 儲存每個查詢,並保留開啟狀態,供接下來的步驟使用。

建立產生資料表查詢

  1. 在設計檢視中開啟頂端值查詢:

    [設計] 索引標籤的 [查詢類型] 群組中,按一下 [製成資料表]
    [ 製作表格> 對話方塊即會出現。

  2. 資料表名稱方塊 中,輸入儲存頂端和底部記錄之資料表的名稱。 例如,輸入 [頂端和底部記錄,然後按一下 [確定
    每次執行查詢時,查詢會建立資料表,並取代目前資料中的頂端值,而不是在資料工作表中顯示結果。

  3. 儲存並關閉查詢。

建立新增查詢

  1. 在設計檢視中開啟底值查詢。

  2. 在 [設計] 索引標籤的 [查詢類型] 群組中,按一下 [新增]。

  3. 在 [附加資料表> 對話方塊中,輸入您輸入的相同名稱。
    例如,輸入 [頂端記錄與最下層記錄 ,然後按一下 [確定。 每次執行查詢時,查詢不會在資料工作表視圖中顯示結果,而是將記錄附加到頂端和底部記錄資料表。

  4. 儲存並關閉查詢。

執行查詢

您現在已準備好執行這兩個查詢。

  • 在功能窗格中,按兩下頂端值查詢,然後按一下郵件中的 [是

  • 按兩下 [底端值」 查詢,然後按一下郵件中的 [是

  • 在資料工作表視圖中開啟頂端和底部記錄資料表。

頁面頂端

Need more help?

擴展您的技能

探索訓練 >

優先取得新功能

加入 MICROSOFT 測試人員 >

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×