Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

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

您想要做什麼?

瞭解頂端值查詢

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

  • 哪個產品是最或最便宜的產品?

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

  • 哪一個部門在今年期間的銷售量最大或最低?

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

  • 每個產品類別中的哪些產品占銷售額的前五個或最後五個百分比?

簡單來說,頂端值查詢會排序並篩選數據,以傳回欄位中的頂端或底部值。 您可以使用熱門值查詢來搜尋數值 (包括貨幣) 和日期值。

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

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

    您可以使用選取查詢來尋找資料表中的頂端或底部值。 您可以使用合計查詢,在一或多個類別中尋找頂端或底部的值。 例如,如果您想要回答「什麼是最或最便宜的產品」之類的問題,請從建立選取查詢開始。 若要回答像是「我們每個產品類別中哪些產品佔用銷售額的前五個或最後五個百分比」之類的問題,請使用合計查詢。 此外,您可以使用任一類型的查詢來尋找一組記錄或屬於類別的記錄中的頂端和底部值。

  • 將排序順序套用至查詢。

  • 將其他準則套用至查詢。

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

在頂端值查詢和篩選之間進行選擇

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

  • 如果您想要傳回欄位中包含最高或最低值的記錄,而您不知道字段 (的確切頂端或底端域值,或這些值與) 無關,則會建立頂端值查詢。

  • 如果您想要傳回欄位中值相符的所有記錄,或是其值小於或大於您感興趣的值,請套用篩選。 例如,若要查看價格在 $50 到 $100 之間的產品,請套用篩選。 此圖說明查詢 [設計檢視] 中的範例篩選,以及這類篩選可產生的結果:

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

    如需建立和使用篩選的詳細資訊,請參閱 套用篩選以檢視 Access 資料庫中的選取記錄一文。

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

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

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

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

姓氏

名字

地址

城市

國家/地區

出生日期

雇用日期

沙東

1 Main St.

New York

Taiwan

05-Feb-1968

10-Jun-1994

Heloo

Waleed

52 1st St.

Boston

Taiwan

22-May-1957

22-Nov-1996

Guido

盧珮佳

3122 75th Ave. S.W.

Seattle

Taiwan

11-Nov-1960

11-Mar-2000

貝果

Jean Philippe

1 Contoso Blvd.

London

UK

22-Mar-1964

22-Jun-1998

價格

朱利安

Calle Smith 2

Mexico City

墨西哥

05-Jun-1972

05-Jan-2002

休斯

克莉 絲 汀

3122 75th St. S.

台北市

Taiwan

23-Jan-1970

23-Apr-1999

萊利

史蒂夫

67 Big St.

Tampa

Taiwan

14-Apr-1964

14-Oct-2004

Birkby

丹娜

2 Nosey Pkwy

苗栗縣

Taiwan

29-Oct-1959

29-Mar-1997

貝果

Jean Philippe

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. 在查詢設計網格線的 [出生日期] 欄右側的欄中,複製並貼上或輸入表達式 表達式1: DatePart (“m”,[Birth Date]) DatePart 函數會擷取 [出生日期] 字段中值的月份部分。

  3. 在包含表達式的欄右側,複製並貼上或輸入表達式 表達式: DatePart (“d”,[Birth Date]) 。 在此情況下, DatePart 函數會擷取 [出生日期] 欄位中值的日部分。

  4. 清除 [ 顯示 ] 列中每個表達式的複選框,然後按下每個表達式的 [排序 單元格],然後選取 [ 遞增]

  5. 或者,您可以指定準則來限制查詢的範圍。 當您指定準則時,查詢只會排序符合準則的記錄,並識別排序列表中頂端或底端的域值。
    若要繼續使用範例數據,請在 [出生日期] 欄位的 [ 準則 ] 列中,輸入或複製並貼上此表達式:

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

    此表達式會執行下列動作: [月份] ([BirthDate]) > 月份 (日期 () ) 部分會檢查每位員工的出生日期,以查看是否落在未來月份中,如果是,則查詢中包含這些記錄。 月份 ([BirthDate]) = 月份 (日期 () ) 日 ([BirthDate]) >日 (日期 () ) 表達式的一部分會檢查目前月份中發生的出生日期,以查看出生日期是落在目前日期上還是之後。 如果條件為 True,函數會在查詢結果中包含這些記錄。 若要摘要說明,此表達式會忽略出生日期落在 1 月 1 日到您執行查詢之日期之間的任何記錄。

    若要查看查詢條件表達式的更多範例,請參閱 查詢條件範例一文。

  6. 在 [ 設計] 索 引標籤的 [ 查詢設定 ] 群組中,按兩下 [ 傳回 ] 旁的向下箭號 () 的 [ 熱門值 ] 清單,然後輸入您要查看的記錄數目或百分比,或從清單中選取選項。

  7. 按兩下 [ 執行 ] 以執行查詢,並在 [資料工作表檢視] 中顯示結果。

如果您的查詢傳回的記錄數目超過預期

如果您的數據包含共用日期值的記錄,您的最上層值查詢可能會傳回比預期更多的數據。 例如,您可以設計一個熱門值查詢來擷取三筆員工記錄,但實際上卻會看到四筆,因為 「又」和「又賀」共用生日。 無論有多少筆記錄有這些值,此類型的查詢都會傳回所有頂端值。 若要排除重複的值,您可以將名為 [唯一 ] 的屬性設為 [是]。 如需使用該屬性的相關信息,請參閱本文稍後的 如果您看到重複的記錄一節。

姓氏

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 欄位。 或者,如果只要看到其中一筆重複的記錄就足夠了,您只能將查詢的 [唯一值 ] 屬性設為 [ ] 來顯示相異的記錄。 若要設定此屬性,請在查詢 [設計視圖] 中按 F4 以顯示查詢的屬性表、找出 [唯一值 ] 屬性並將其設為 [是]

如需處理重複記錄的詳細資訊,請參閱 使用查詢尋找重複記錄一文。

頁面頂端

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

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

例如,假設您有一份產品數據表,而您將每個產品指派給類別,例如「版面遊戲」、「拼圖」等等。 如果您建立合計查詢來識別每個類別中最價格的產品,查詢只能包含包含類別數據的欄位,以及包含價格數據的欄位。 在此範例中,假設稱為 [類別名稱] 的欄位和名為 [價格] 的字段。 當您執行此類型的查詢時,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

Southridge 影片

[產品] 數據表

產品名稱

SupplierID

CategoryID

價格

[程序設計師] 動作圖

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

旗艦飛披薩

2

5

$36.75

外部 5.25 吋磁碟驅動器 (1/4 Scale)

8

6

$65.00

管理員非動作圖表

9

4

$78.88

黑暗

12

3

$53.33

建立您自己的鍵盤

1

6

$77.95

附註: 這些步驟也假設 [類別] 和 [產品] 資料表之間具有一對多關係,而 [供貨商] 和 [產品] 數據表之間則相同。 在此情況下,數據表會共用 SupplierID 和 CategoryID 欄位。 沒有關聯,下一節所述的合計查詢將無法運作。

建立合計查詢

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

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

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

  4. 或者,您可以指定限制查詢範圍的準則。
    只有符合準則的記錄會進行排序,而頂端和底端域值會在此排序列表中識別。 例如,若要排除 [運動] 類別中的產品,您可以將此表達式新增至 [類別名稱] 欄位的 [準則] 列: <>“Sports”。
    若要查看查詢條件表達式的更多範例,請參閱 查詢條件範例一文。

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

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

      [ 合計 ] 列會出現在設計網格線中。

  6. 確定每個群組欄位的 [ 合計 ] 儲存格設為 [ 群組依據],然後將值欄位的 [ 合計 ] 單元格設 (包含頂端或底部值的欄位) 為 [最大 ] 或 [ 最小值]
    選取 [Max ] 會傳回數值欄位中的最大值,以及 [日期/時間] 欄位中最近的日期或時間值。 選取 Min 會傳回數值欄位中的最小值,以及 [日期/時間] 欄位中的最早日期或時間值。 如果您使用範例數據,請將 [類別名稱] 欄位的 [ 合計 ] 儲存格設為 [群組依據],並將 [Price] 字段的 [ 合計 ] 儲存格設為 [最大 值] 或 [ 最小值]

  7. 在 [ 設計] 索引 標籤的 [ 工具 ] 群組中,確認 [ 退貨 ] 清單已設定為 [ 全部],然後按兩下 [ 執行 ] 以執行查詢,並在 [資料工作表檢視] 中顯示結果。

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

  8. 儲存查詢並移至後續步驟。

查詢不會傳回產品名稱或產品的其他資訊。 若要查看其他數據,您必須建立第二個查詢,併入您剛才建立的查詢。 下列步驟將說明如何建立第二個查詢。

建立第二個查詢以檢視更多數據

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

  2. 按兩下 [ 查詢] 索 引標籤,然後按兩下您在上一節中建立的合計查詢。

  3. 按兩下 [ 資料表] 索 引標籤,並新增您在合計查詢中使用的數據表,以及包含您要查看之其他相關數據的任何資料表。
    如果您使用先前列出的範例數據表,請將 [類別]、[產品] 和 [供貨商] 數據表新增至新的查詢。

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

    如果您使用範例數據,請將合計查詢中的 [類別名稱] 字段拖曳到 [類別] 資料表中的 [類別名稱] 字段。 接著,您將合計查詢中的 MaxOfPrice 欄位拖曳到 [產品] 數據表中的 [價格] 字段。 聯結可讓新的選取查詢將合計查詢中的數據與其他數據表中的數據匯總在一起。

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

    如果您使用範例數據表,請按兩下您在上一節中建立的合計查詢,然後分別從 [產品] 和 [供貨商] 資料表新增 [產品名稱] 和 [供貨商] 欄位。

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

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

    這會執行查詢,並在 [數據工作表檢視] 中顯示結果。

提示: 如果您不想讓 [價格] 欄標題顯示為 MaxOfPriceMinOfPrice,請在 [設計視圖] 中開啟查詢,然後在網格線的 [價格] 欄中輸入 [價格:MaxOfPrice ] 或 [ 價格:MinOfPrice]。 如此一來, [價格] 會顯示為 [數據工作表檢視] 中的欄標題。

頁面頂端

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

您先前在本文中建立的查詢可以傳回頂端或底部的值,但不能同時傳回兩者。 如果您想要在單一檢視中看到這兩組值,您需要建立兩個查詢:一個擷取頂端值,另一個擷取底端的值,然後合併並將結果儲存在單一數據表中。

尋找頂端和底端值,並在資料表中顯示該資料的程式會遵循下列大略步驟:

  • 建立頂端值查詢和底端值查詢,或者,如果您需要將數據分組,請建立使用 MinMax 函數 的合計查詢。

  • 將頂端值查詢 (或最大合計查詢) 組成數據表查詢,然後執行此查詢以建立新數據表。

  • 將底端值查詢 (或 Min totals 查詢) 轉換為追加查詢,並執行此查詢以將記錄新增至最上方的值數據表。

    這些區段中的步驟說明如何建立查詢。

    附註: 除非您的資料庫是以數位方式簽署,或是資料庫位於信任的位置,否則 Access 會阻止您執行此處所述的動作查詢。 請依照第一組步驟啟用任何封鎖的內容,然後再嘗試建立製作數據表,並附加此處所述的查詢。

    啟用資料庫中的內容

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

    • 再次執行查詢。

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

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

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

建立數據表查詢

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

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

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

  3. 儲存並關閉查詢。

建立追加查詢

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

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

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

  4. 儲存並關閉查詢。

執行查詢

您現在可以執行這兩個查詢了。

  • 在 [導航窗格] 中,按兩下頂端值查詢,然後按兩下郵件中的 [ ]。

  • 按兩下 [底端值] 查詢,然後按兩下郵件中的 [ ]。

  • 在 [數據工作表檢視] 中開啟頂端和底部記錄數據表。

頁面頂端

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×