在 QUERY 中排序和分组
使用 ORDER BY 和 GROUP BY 对结果排序并进行汇总
在 QUERY 中排序和分组 是 CoddyKit 上的免费 Excel Formulas Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Excel Formulas Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Excel Formulas Academy 课程共包含 4 节课。
不止于筛选
筛选可以显示正确的行,但真正的报告还需要排序和总计。QUERY 通过另外两个类似结构化查询语言的子句来处理这两件事:ORDER BY 和 GROUP BY。
借助它们,您可以在一个公式中回答“哪个区域的销售额最高”或“按交易额从大到小列出交易”等问题。
使用 ORDER BY 排序
ORDER BY 子句可以按照一个或多个列对结果进行排序。它位于 WHERE(如果有)之后。
默认情况下,它会按升序排序(最小值在前,A 到 Z)。此公式会将所有行按销售额从低到高列出。
=QUERY(A1:D7, "SELECT A, B, D ORDER BY D", 1)降序排列
在列名后添加 DESC,即可按从高到低的顺序排序。使用 ASC 可以明确指定升序。
这样会先显示销售额最高的记录,非常适合制作业绩最佳者列表。将它与 LIMIT 配合使用,即可得到清晰的前三名。
=QUERY(A1:D7, "SELECT B, D ORDER BY D DESC LIMIT 3", 1)按多个列排序
在 ORDER BY 中列出多个列,并用逗号分隔,即可处理并列情况。Sheets 会先按第一个列排序,然后使用下一个列对相同的行继续排序。
这里的结果先按区域的字母顺序排列,在每个区域内再按销售额从高到低排列。
=QUERY(A1:D7, "SELECT A, B, D ORDER BY A ASC, D DESC", 1)介绍 GROUP BY
GROUP BY 会将具有相同值的行合并为一行汇总数据。这正是按类别创建总计的方法。
要使用它,您的 SELECT 需要将分组列与应用于另一列的聚合函数结合起来,例如 SUM、COUNT 或 AVG。
按组求和
此公式会计算每个区域的销售额总计。SUM(D) 会累加 Sales 列,而 GROUP BY A 会为每个区域生成一行。
结果就像一个小型数据透视表:东部及其总计、西部及其总计,全部通过一个函数生成。
=QUERY(A1:D7, "SELECT A, SUM(D) GROUP BY A", 1)按组计数
将求和函数换成 COUNT,即可统计行数而不是求和。这样可以告诉您每个区域完成了多少笔交易。
您可以使用 COUNT(D) 统计非空的销售额单元格,从而快速得到每组的行数。
=QUERY(A1:D7, "SELECT A, COUNT(D) GROUP BY A", 1)按组求平均值
使用 AVG 可以计算每组的平均值。这里我们会得到每个区域的平均交易额。
您甚至可以混合使用聚合函数:在同一个查询中同时选择 SUM(D) 和 AVG(D),并排显示总计和平均值。
=QUERY(A1:D7, "SELECT A, SUM(D), AVG(D) GROUP BY A", 1)每个非聚合项都必须分组
一个常见错误是:SELECT 中每个没有使用聚合函数的列,都必须出现在 GROUP BY 中。
SELECT A, B, SUM(D) GROUP BY A 会失败,因为 B 既没有进行聚合,也没有参与分组。您可以同时按两个列分组,或将 B 从选择列表中移除。
=QUERY(A1:D7, "SELECT A, B, SUM(D) GROUP BY A, B", 1)对分组结果排序
将这些子句组合起来,就可以对汇总结果进行排名。完成分组后,按聚合结果排序,即可将最大的分组放在最前面。
这样会列出每个区域及其销售额总计,并按总计从高到低排序,直接生成一份排行榜。
=QUERY(A1:D7, "SELECT A, SUM(D) GROUP BY A ORDER BY SUM(D) DESC", 1)为聚合列添加标签
分组后的列可能会得到像 销售额总和 这样不够美观的标题。添加 LABEL 子句即可为它们重新命名,让报告更加专业。
此操作会将总计列重命名为销售额总计。标签文本和筛选值一样,要使用单引号。
=QUERY(A1:D7, "SELECT A, SUM(D) GROUP BY A LABEL SUM(D) 'Total Sales'", 1)快速检查
检查您对排序和分组的掌握程度。
回顾
现在您已经可以调整 QUERY 的结果:
ORDER BY col [ASC|DESC]用于排序,还可以添加其他列来处理并列情况GROUP BY加上SUM、COUNT或AVG可以生成按类别汇总的结果- 选定的非聚合列必须出现在
GROUP BY中 LABEL可以重命名聚合结果的标题
现在,一个公式就能生成经过排序、分组并添加标签的报告。
=QUERY(A1:D7, "SELECT A, SUM(D) GROUP BY A ORDER BY SUM(D) DESC LABEL SUM(D) 'Total Sales'", 1)常见问题解答
「在 QUERY 中排序和分组」课时是免费的吗?
是的 — 「在 QUERY 中排序和分组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Excel Formulas Academy 课程的其余内容,请升级到 CoddyKit PRO。 Excel Formulas Academy 课程共包含 4 节课。
「在 QUERY 中排序和分组」这节课中我会学到什么?
使用 ORDER BY 和 GROUP BY 对结果排序并进行汇总 你通过在浏览器中直接运行的动手代码来练习 Excel Formulas Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Excel Formulas Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Excel Formulas Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「在 QUERY 中排序和分组」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Excel Formulas Academy 课中编写并运行代码吗?
能。每节 Excel Formulas Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 QUERY 查询数据
- 在 QUERY 中排序和分组
- 使用 ARRAYFORMULA 将公式应用到整列
- 使用 IMPORTRANGE 提取数据