Navicat 博客

2018 年 2 月 27 日,由 Robert Gravelle 撰写

除了获取个别值之外,SELECT 语句还能够基于一个或多个列聚合数据元素。Navicat 查询创建工具的这篇文章将介绍如何在查询中使用原生 SQL 聚合函数以显示列的统计信息。

关于 Sakila 示例数据库

与前几篇文章一样,我们今天将在此处构建的查询将在 Sakila 示例数据库Sakila 示例数据库运行。它包含许多以电影业为主题的表,涵盖从演员和电影制片厂到影碟出租店的所有内容。有关下载和安装 Sakila 数据库的说明,请参阅 Generating Reports on MySQL Data(生成 MySQL 数据报表)教程。

使用聚合函数

在 SQL 中,输出字段可以传递给聚合函数以生成列数据的统计信息。聚合函数包括 COUNT、MAX、MIN、SUM 和 AVG:

  • COUNT():返回指定字段中包含非 NULL 值的行数。
  • SUM():返回指定字段中非 NULL 值的总和。
  • AVG():返回指定字段中非 NULL 值的平均值。
  • MIN():返回指定字段中非 NULL 值的最小值。
  • MAX():返回指定字段中非 NULL 值的最大值。

第 2 部分所述,点击 Navicat 查询创建工具中输出字段左侧的 <func>修饰符可打开 SUM、MAX、MIX、AVG 和 COUNT 聚合函数的列表。从列表中选择所需的函数会将其插入到查询中:

这是一个使用聚合函数显示电影数量、平均电影长度、电影总长度以及最低和最高出租率的查询:

设置分组准则

以上的结果与整个表相关的。你也可以使用 GROUP BY 子句按一列或多列对记录进行分组。

让我们设计一个查询,按月显示租借电影的数量。在查询创建工具中执行以下步骤︰

  • 将 film 和 rental 表拖到编辑器中。
  • 将 film.film_id 字段拖到 rental.inventory_id 字段上以联接两个表。
  • 添加一个输出字段。在编辑器中,输入“MONTHNAME(rental_date)”。
  • 点击 <Alias> 标签,然后输入“rental_month”值。
  • 添加第二个字段。这次,从字段列表中选择 rental_id。
  • 点击 <Func> 标签,然后从列表中选择 COUNT。
  • 点击 <Alias> 标签,然后输入别名“rental_count”。
  • 点击 <按这里添加 GROUP BY> 标签,然后使用编辑器输入“MONTH(rental_date)”。

    查询创建工具现在应该如下所示:
  • 点击“确定”关闭“查询创建工具”并返回“查询编辑器”。

运行查询以查看结果:

请留意如何在 rental_month 输出字段上应用 MONTHNAME 函数显示完整的月份名称而不是 MONTH() 函数返回的数字。无论如何,可以使用任何一种函数对结果按月份进行分组。

Navicat 文章
频道条目
分享
文章归档