查找组或字段中包含上限值和下限值的记录

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

本文介绍如何使用上限值查询来查找一组记录中的最高或最低值。您可以使用上限值查询来回答多种业务问题,如哪些产品畅销和哪种不能。

您要做什么?

了解上限值查询

查找包含顶部或底部的值的记录

找到记录在类别或组的顶部或底部的值

查找包含顶部和底部的值的记录

了解上限值查询

当您需要查找包含表字段中的顶部或底部的值的记录,您可以使用上限值查询。您可以使用上限值查询回答以下类型的问题。

  • 这是最或至少贵的产品?

  • 三个员工有下一个生日?

  • 哪些部门生成当年内的最大或过销售?

  • 哪些产品占用顶部或底部的销售额的 5%?

  • 每个产品类别中的哪些产品排在最高或最低的销售额的 5%?

简而言之,上限值查询将进行排序,然后再进行筛选数据的顶部或底部的值返回字段中。您可以使用上限值查询搜索 (包括货币) 的数字和日期值。

创建上限值查询的过程包括以下主要步骤 ︰

  • 创建选择查询或总计查询。

    选择查询用于查找表中的顶部或底部的值。总计查询用于在一个或多个类别中找到中的顶部或底部的值。例如,如果您想要回答问题,例如"的最大或最便宜的产品",您首先创建选择查询。要回答问题,如"每个我们的产品类别中哪些产品排在最高或最低的 5%的销售额,"可以使用总计查询。此外,您可以使用任何一种查询记录组或属于类别的记录中查找的顶部和底部的值。

  • 应用于查询的排序顺序。

  • 应用于查询的其他条件。

  • 指定您希望查询返回的记录数。您可以指定一个百分比,如前 5%的值字段中,或者您可以指定一个固定的数字,如前 10 个值字段中。

上限值查询和筛选器之间进行选择

要确定您是否应创建上限值查询或应用筛选器,请考虑下列问题 ︰

  • 如果您想要返回包含一个字段中的最高或最低值的记录和您不知道的确切的顶部或底部字段值 (或无关紧要),您可以创建上限值查询。

  • 如果您想要返回的所有记录的字段中的值匹配的位置,或者小于或大于您感兴趣,应用筛选器的值。例如,若要查看哪些产品的价格介于 50 元和 100 元,您可以应用筛选器。下图显示了示例筛选器在查询设计视图和这样的筛选器可以生成的结果 ︰

    价格介于 50 元和 100 元之间的产品

    有关创建和使用筛选器,请参阅文章的详细信息筛选 ︰ 限制视图中的记录数

创建和使用上限值查询规则

执行操作时,请记住,而不考虑查询类型 (选择查询或总计查询),您必须使用包含描述性的数据,例如雇员或产品名称的字段和包含您要查找的信息,如价格或日期字段的顶部或底部值的字段。您可以使用多个数据字段,并且,如果您使用总计查询,数据字段通常应包含类别的信息,如城市或国家/地区字段。您可以忽略类别数据,仅当您创建总计查询的运行对所有记录,如"显示我的最昂贵订单前 5%"。此外,您可以使用选择或总计查询在一组记录或分为类别的记录中找到的顶部和底部的值。有关执行此操作的详细信息,请参阅本文后面的查找类别或组中的记录的顶部或底部的值,一节。

查找包含顶部或底部的值的记录

本部分中的步骤解释如何创建基本的上限值查询和更高级的查询。第二部分介绍了如何查找下一步的几个员工生日时,第一个步骤演示、 上限值查询的基本部分。这些步骤使用下面的示例表 ︰

姓氏

名字

地址

城市

国家/地区

出生日期

聘用日期

1 Main St.

New York

USA

1968-02-05

1994-06-10

Heloo

Waleed

52 1st St.

Boston

USA

1957-05-22

1996-11-22

Guido

Pica

3122 75th Ave. S.W.

Seattle

USA

1960-11-11

2000-03-11

Bagel

Jean Philippe

1 Contoso Blvd.

London

英国

1964-03-22

1998-06-22

Price

Julian

Calle Smith 2

墨西哥城

墨西哥

1972-06-05

2002-01-05

Hughes

Christine

3122 75th St. S.

西雅图

USA

1970-06-23

1999-04-23

斯闻

67 Big St.

Tampa

USA

1964-04-14

2004-10-14

Birkby

Dana

2 Nosey Pkwy

波特兰

USA

1959-10-29

1997-03-29

Bagel

Jean Philippe

1 Contoso Blvd.

London

英国

1964-03-22

1998-06-20

如果需要,您可以手动输入数据在此示例表,也可以将此表复制到电子表格程序,如Microsoft Office Excel 2007,,然后将结果工作表导入的表中Microsoft Office Access 2007。

显示方法

手动输入的示例数据

  1. “创建”选项卡上的“表”组中,单击“表”

Office Access 2007将新的空白表添加到您的数据库。

注意: 您不需要执行此步骤,如果打开一个新的空白数据库,但您将需要按照您需要向数据库添加表格。

  1. 双击标题行中的第一个单元格并键入示例表中的域的名称。
    默认情况下,Access 在表示空白字段标题行中使用文本添加新字段,如下所示 ︰
    数据表中的新字段

  2. 使用箭头键移动到下一个空白标题单元格,然后键入第二个字段的名称 (您可以按 TAB 或者双击新单元格)。重复此步骤,直到输入所有字段的名称。

  3. 示例表中输入数据。
    输入数据时,Access 会推断出的每个字段的数据类型。如果您不熟悉关系数据库,您可以设置特定的数据类型,如数字、 文本或日期/时间,对于每个表中的字段。设置数据类型有助于确保数据输入正确,并有助于防止出现错误,例如在计算中使用电话号码。这些示例表,您应该告知推断数据类型的访问。

  4. 完成输入完数据后,单击保存
    键盘快捷方式按 CTRL + S
    另存为对话框中显示。

  5. 表名称框中,输入示例表的名称,然后单击确定
    您使用的每个示例表的名称,因为操作方法部分中的查询使用的那些名称。

  6. 您创建的每个开头的此部分中列出的示例表之前,请重复这些步骤。

将表复制到电子表格程序

  1. 启动电子表格程序并创建一个新的空白文件。如果您使用 Excel 时,默认情况下创建一个新的空白工作簿。

  2. 复制上一节中提供的示例表并将其粘贴到第一个工作表,起的第一个单元格。

  3. 使用电子表格程序,名称的工作表的员工提供的方法。

  4. 将电子表格文件保存到适当的位置,然后转到下一步骤。

导入 Access 表

  1. 在新的或现有数据库 ︰
    外部数据选项卡上的导入组中,单击Excel
    -
    单击多个,,然后选择电子表格程序列表中。
    获取外部数据-程序名电子表格对话框中显示。

  2. 单击浏览,打开您在前面的步骤中创建电子表格文件,然后单击确定
    启动导入电子表格向导。

  3. 默认情况下,在向导页的下半部分显示中的工作簿 (员工,如果您已按照上一节中的步骤) 和工作表中的数据的第一个工作表向导选择。单击下一步

  4. 在向导的下一页上,单击第一行包含列标题,然后单击下一步

  5. (可选) 在向导的下一页上,使用文本框和在域选项下的列表以更改字段名称和数据类型或省略导入操作中的字段。否则,单击下一步

  6. 保持选中状态,让 Access 添加主键的选项,然后单击下一步

  7. 默认情况下,Access 适用于您的新表的工作表的名称。接受的名称或另一个名称,输入,然后单击完成

注意: 如果您没有电子表格程序,您可以将示例数据复制到记事本等文本编辑器。有关导入文本数据的详细信息,请参阅导入或链接文本文件中的数据一文。

创建基本的上限值查询

  1. 在“创建”选项卡上的“其他”组中,单击“查询设计”。

  2. 显示表对话框中,单击您要在查询中使用的文件,单击添加将表放在设计网格中,然后单击关闭表。
    -
    双击表。
    如果您使用的示例数据,将雇员表添加到查询。

  3. 添加您想要使用您在查询设计网格中的字段。您可以双击每个字段,或拖放在一个空白单元格,在字段行中的每个字段。
    如果使用示例表,添加的名字、 姓氏和出生日期的字段。

  4. 在字段中包含您顶部或底部的值 (出生日期字段中,如果使用示例表),单击排序行,然后选择升序降序
    如果值字段包含数字,如价格或销售数字,升序排序顺序返回的最小值,降序排序顺序返回最大值。如果值字段中包含的日期,降序排序顺序将返回的最新日期,而升序返回的最早日期。

    重要: 仅对包含您顶部或底部的值的字段,您必须设置为升序降序排序行。如果指定字段的排序次序以外的其他字段包含顶部或底部值-例如,而不是价格 ProductName-查询将返回所需的结果。

  5. 设计选项卡的工具组中,单击所有上限值列表),和或者旁边的向下箭头输入数字或您想要查看,或从列表中选择一个选项的记录的百分比。

  6. 单击运行 按钮图像 以运行查询并在数据表视图中显示结果。

  7. 保存该查询并将其打开以供使用保留在后续步骤。

您可以查看此类上限值查询可以回答基本的问题,例如谁是最早的顺序或公司中的最新的人员。下面的步骤解释如何使用表达式和其他条件来添加到查询的功能和灵活性。下一步中所示的条件返回三个员工生日。

向查询添加条件

注意: 这些步骤假设您将使用上一节中介绍的查询。

  1. 在设计视图中打开上一个步骤中创建的查询。

  2. 在查询设计网格中,在出生日期列的右侧列中,复制和粘贴或键入表达式表达式 1: DatePart("m",[出生日期])DatePart函数提取出生日期字段中的值的月部分。

  3. 包含您的表达式的列的右侧,复制和粘贴或键入表达式表达式 2: DatePart("d",[出生日期])。在此例中, DatePart函数提取出生日期字段中的值的日部分。

  4. 清除复选框的每个表达式的显示行中,单击每个表达式的排序单元格,然后选择升序

  5. (可选) 您可以指定条件来限制查询的范围。当您指定条件时,查询对符合条件,记录进行排序,它标识顶部或底部字段中的值排序列表中。
    要继续的示例数据,请在出生日期字段的条件行中,键入或复制并粘贴以下表达式 ︰

    Month ([出生日期]) > Month(Date()) 或月 ([出生日期]) = Month(Date()) 和天 ([出生日期]) > Day(Date())

    此表达式执行下列操作 ︰月 ([出生日期]) > Month(Date())部分检查每个员工的出生日期,以查看是否它落在未来月并且,如果为 true,则在查询中包含这些记录。月 ([出生日期]) = Month(Date()) 和 Day([BirthDate]) > Day(Date())表达式部分检查在当前月份,以查看是否出生日期或当前日期之后发生的出生日期。如果该条件为真,该函数将查询结果中包含这些记录。总之,此表达式将忽略任何记录,其中的出生日期之间年 1 月 1 和运行查询的日期。

    若要查看查询条件表达式的更多示例,请参阅查询条件示例一文。

  6. 设计选项卡上,在工具组中,单击所有上限值列表),和或者旁边的向下箭头输入数字或您想要查看,或从列表中选择一个选项的记录的百分比。

  7. 单击运行 按钮图像 以运行查询并在数据表视图中显示结果。

如果您的查询返回比您期望的更多记录

如果数据中包含共享的日期值的记录,上限值查询可能返回比您期望的更多数据。例如,您可以设计上限值查询来检索三个员工记录,但您实际看到四因为"孙"和"Edwards"共享生日。此类查询返回所有上限值,无论多少记录具有这些值。若要排除重复值,可以设置名为唯一值的属性。使用该属性的信息,请参阅本文后面的部分,如果您看到重复记录

姓氏

出生日期

Johnson

9/26/1968

1970 年 10 月 2 日

Edwards

10/15/早出现于 1965

Wilson

10/15/1969

如果您的查询返回超过预期较少的记录

假设您设计查询返回顶部或底部五个记录,在字段中,但您只能看到三条记录。一条规则,您可以通过在设计视图中打开查询并查看在设计网格中比预期更严格的条件条件行来解决这种类型的问题。有关条件的详细信息,请参阅查询条件示例一文。

如果您看到重复记录

如果上限值查询返回重复项,基础表包含重复记录,或者记录显示为重复项,因为查询不包括可以区分记录的字段。例如,下面将显示五个订单的查询最近,发货销售人员的名称以及谁处理交易。

发货日期

销售人员

2004 年 11 月 12 日

2004 年 11 月 12 日

莫雷诺

2004 年 10 月 12 日

Osada

2004 年 10 月 12 日

Osada

2004 年 10 月 12 日

第三个和第四个记录显示为重复,但这可能是销售人员张明以下两个不同附带的同一天。

根据您的要求,您可以执行以避免返回重复记录的两种原因之一。您可以更改查询的设计,以添加有助于区分记录,如订单 Id 和客户 id 字段的字段。或者,如果足以看到仅有一个重复记录,您可以通过查询的唯一值属性设置为中显示不同的记录。若要设置此属性,在查询设计视图中按 F4 以显示查询属性表,找到唯一值属性,并将其设置为

有关处理重复记录的详细信息,请参阅查找、 隐藏或消除重复数据一文。

返回页首

找到记录在类别或组的顶部或底部的值

通过创建总计查询分为组的记录中找到的顶部或底部的值。执行操作时,请记住 ︰ 默认情况下,仅或多个字段包含组数据,例如"类别"字段,并具有的顶部或底部的值,如"价格"字段的字段,可以包括总计查询。总计查询不能包括其他描述类别中的项目的字段。但是,您可以创建另一个查询,其中包含您的总计查询中的字段以及包含描述性数据的其他表中的字段。

例如,假设您有一个表的产品,并分配给类别,如版块游戏,测验,每个产品,依此类推。如果您创建总计查询来标识每个类别中成本最高的产品,查询可以仅包含字段或包含该类别数据的字段和包含价格数据的字段。对于此示例,假设一个名为类别名称字段和一个名为价格字段。此类查询运行时,Access 会在追加"最大"或"最小"(具体取决于您选择的函数) 开头单价字段中,如下所示 ︰

类别名称

最大价格

游戏板

$ 55.00

测验

$ 43.90

计算机游戏

$ 263.50

洋娃娃

$ 81.00

...

...

您的总计查询不能包括其他字段可帮助描述产品 (和从而使数据更易于理解),例如产品名称或供应商的名称如下所示 ︰

类别名称

最大价格

产品名称

供应商的名称

游戏板

$ 55.000

有趣的 c + +

前进文具公司

测验

$ 43.90

关系数据库关系图

罗森

计算机游戏

$ 263.50

计算机进阶和幻想世界

Litware, Inc.

洋娃娃

$ 81.00

程序员操作图

康浦有限公司

...

...

...

...

如果您想要查看说明性数据,您可以创建的第二个选择查询的组合总计查询中使用其他数据字段的字段。

本部分中的步骤解释如何创建总计查询,然后选择所需的标识每个中的最贵产品的查询一组的类别。这些步骤假设使用下面的示例表 ︰

类别表

类别 id

类别名称

说明

1

游戏板

所有年龄和技能级别

2

测验

拼板、 词、 益智玩具

3

计算机游戏

所有控制台和技能级别

4

洋娃娃

操作的数字,方式洋娃娃

5

运动设备

球、 服装、 网

6

模型/爱好

飞机、 汽车、 火车

供应商表

供应商 Id

供应商的名称

1

世邦

2

Tailspin Toys

3

罗斯文商贸

4

嘉元实业

5

罗森

6

前进文具公司

7

康浦有限公司

8

全球导入程序

9

Wingtip 玩具

10

全球导入程序

11

Litware, Inc.

12

南广视频

产品表

产品名称

供应商 Id

类别 id

价格

程序员操作图

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

计算机进阶的练习 !DVD !

4

5

$ 14.88

摄像头

2

5

$ 36.75

外部 5.25 英寸软盘驱动器 (1/4 缩放)

8

6

$ 65.00

经理人像

9

4

$ 78.88

黑夜

12

3

$ 53.33

构建您自己的键盘

1

6

$ 77.95

注意: 步骤还假设类别和产品表中,和相同供应商和产品表之间的一对多关系。在此例中,两个表共享供应商和类别 id 字段。以下各节中所述的总计查询将不起作用,没有关系。

创建总计查询

  1. 在“创建”选项卡上的“其他”组中,单击“查询设计”。

  2. 显示表对话框中,选择您想要处理,单击添加,然后单击关闭,将表格添加完后的表。
    -
    双击所需的表,然后单击关闭。每个表都显示在设计网格中。如果您使用上面列出的示例表,您可以添加类别和产品表。

  3. 双击您要在查询中使用的表字段。
    点,确保您添加到查询仅组域和值字段。如果您使用了上表中列出的示例数据,添加类别表中,从类别名称字段和价格字段从产品表。

  4. (可选) 您可以指定的条件来限制查询的范围。
    只会排序满足条件的记录,并且将该排序列表中标识顶部和底部字段值。例如,要排除运动类别中的产品,您将添加此表达式到条件行中的类别名称域 ︰ <>"运动"
    查询条件表达式的更多示例,请参阅查询条件示例一文。

  5. 将查询转换为总计查询。

    1. 设计选项卡上的显示/隐藏组中,单击汇总

      汇总行显示在设计网格中。

  6. 确保每个组字段的总计单元格设置为分组依据,然后将汇总值字段 (包含的顶部或底部的值的字段) 的单元格设置为最大值最小值
    选择Max返回数值字段和日期/时间字段中的最新日期或时间值中最大值。选择最小数值字段和日期/时间字段中的最早日期或时间值中返回最小值。如果您使用的示例数据,则设置为分组依据最大值最小值单价字段总计单元格类别名称域总计单元格。

  7. 设计选项卡的工具组中,确保为所有,设置上限值列表,然后单击运行 按钮图像 以运行查询并在数据表视图中显示结果。

    注意: 根据您在步骤 7 中选择的函数,Access 查询中的值字段的名称更改为最大最小。如果使用示例表,Access 会重命名字段最大价格最小价格

  8. 保存该查询,然后转到下一步骤。

查询不返回产品名称或产品相关的任何其他信息。若要查看其他数据,您需要创建第二个查询的融入了您刚刚创建的查询。下面的步骤解释如何创建另一个查询。

创建另一个查询以查看更多数据

  1. 在“创建”选项卡上的“其他”组中,单击“查询设计”。

  2. 显示表对话框中,单击查询选项卡,然后双击上一节中创建总计查询。

  3. 单击表格选项卡并添加总计查询中使用的表以及包含您想要查看其他相关的数据的任何表。
    如果您使用前面列出的示例表,将类别、 产品和供应商表添加到您的新查询。

  4. 加入父表中的对应字段的总计查询中的字段。这样做,请将总计查询中的每个字段拖动到表中的相应字段中。

    如果您使用的示例数据,请将总计查询中的类别名称字段拖动到类别表中字段的类别名称。然后将总计查询中的最大价格字段拖动到产品表中的价格字段中。联接使您的新选择查询将组合在一起的总计查询中的数据和其他表中的数据。

  5. 在总计查询窗口中,双击要向设计网格添加整个查询的星号,然后拖动其他字段从查询中的其他表。

    如果使用示例表时,您双击在上一节中创建的总计查询并将产品名称和供应商字段从产品和供应商表中,分别。

  6. (可选) 指定一个或多个列的排序顺序。
    例如,若要按字母顺序排列的类别的列表,设置类别名称列的排序单元格为升序

  7. 在“设计”选项卡上的“结果”组中,单击“运行”。

    此运行查询,并在数据表视图中显示结果。

提示   如果您不希望显示为最大价格最小价格价格列的标题,请在设计视图中打开查询,并在网格中价格列中,键入价格 ︰ 最大价格价格 ︰ 最小价格。这样做可使价格显示为数据表视图中的列标题。

返回页首

查找包含顶部和底部的值的记录

在本文档的早期版本中创建的查询可以返回顶部或底部的值,但不是能同时。如果您想要查看两个组的单个视图中的值,您需要创建两个查询 — 一个用于检索上限值,另一个用于检索最低值,然后合并结果并将结果存储在一个表。

查找顶部和底部的值,并在表格中显示该数据的过程包括以下主要步骤 ︰

  • 创建上限值查询和下限值查询,或者,如果需要您可以对数据进行分组创建总计查询使用MinMax函数。

  • 将上限值查询 (或 Max 总计查询) 转换为生成表查询,然后运行此查询以创建一个新表。

  • 将下限值查询 (或 Min 总计查询) 转换为追加查询,并运行该查询将记录追加到上限值表。

    以下各节中的步骤解释如何创建查询。

    注意: 除非您的数据库进行了数字签名或位于受信任位置,Access 会阻止您从此处运行所述的动作查询。按照第一组步骤以启用被阻止的任何内容之前尝试创建生成表和追加此处介绍的查询。

    启用数据库中的内容

    • 在消息栏中,单击“选项”。

      将显示“Microsoft Office 安全选项”对话框。

    • 选择启用此内容,然后单击确定

    • 再次运行查询。

      如果您看不到消息栏

    • 数据库工具选项卡上的显示/隐藏组中,单击消息栏

      有关禁用模式和 Access 安全性的详细信息,请参阅文章Access 2007 数据库安全

      创建查询

  • 创建顶部和底部的值查询。

    创建一个顶部或底部的值查询所需的步骤,请参阅部分中查找与顶部或底部的值的记录,本文中更早版本。如果您需要您记录按类别进行分组,请参阅查找类别或组中的记录的顶部或底部的值,本文前面的部分。

  • 保存每个查询,并保留用于打开后面的步骤。

创建生成表查询

  1. 将上限值查询设计视图中打开 ︰

    设计选项卡上的查询类型组中,单击生成表
    生成表对话框中显示。

  2. 表名称框中,键入将存储的顶部和底部的记录的表的名称。例如,键入顶部和底部记录,然后单击确定
    每次运行查询,而不是在数据表视图中显示结果,查询创建一个表,用当前数据替换上限值。

  3. 保存并关闭该查询。

创建追加查询

  1. 在设计视图中打开下限值查询。

  2. “设计”选项卡上的“查询类型”组中,单击“追加”

  3. 追加对话框中,键入您在生成表对话框中键入的相同名称。
    例如,键入顶部和底部的记录,然后单击确定。每次运行查询,而不是在数据表视图中显示结果,查询将记录追加到顶部和底部的记录的表。

  4. 保存并关闭该查询。

运行查询

现在您可以运行两个查询。

  • 在数据库窗口中,双击上限值查询,然后单击在邮件中。

  • 双击下限值查询,然后单击在邮件中。

  • 在数据表视图中打开的顶部和底部的记录表。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×