Digital Marketing Academy · 课时

SELECT、WHERE、GROUP BY

汇总广告系列数据

第 2 / 4 课13 个步骤

SELECT、WHERE、GROUP BY 是 CoddyKit 上的免费 Digital Marketing Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Digital Marketing Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Digital Marketing Academy 课程共包含 4 节课。

三个动词

几乎每个营销指标都由三个子句构成:SELECT 选择列,WHERE 筛选行,GROUP BY 将行汇总成细分群组。

掌握这三个子句,您就能独立回答大多数日常分析问题。

SELECT channel, SUM(revenue) AS revenue
FROM orders
GROUP BY channel;

SELECT:选择列

SELECT 列出您希望返回的内容。您可以使用 AS 重命名列,使输出更易读,也可以直接计算新值。

请保持结果集精简:只提取实际需要的列,尤其是在处理大型数据表时。

SELECT campaign_id AS campaign,
       spend,
       spend * 1.2 AS spend_with_fees
FROM campaigns;

WHERE:筛选行

WHERE 只保留符合条件的行。使用 AND 和 OR 组合条件,可以准确锁定某个细分群组。

日期筛选是营销人员最常用的工具,可以精确确定报告时间窗口。

SELECT *
FROM sessions
WHERE channel = 'email'
  AND session_date >= DATE '2026-01-01'
  AND device = 'mobile';

使用 IN 和 BETWEEN 筛选

IN 会匹配列表中的任意值,非常适合同时筛选多个营销活动。BETWEEN 会筛选一个范围,非常适合确定日期窗口。

它们可以让复杂的筛选条件保持简短易读,而不必写出很长的 OR 链。

SELECT order_id, revenue
FROM orders
WHERE channel IN ('paid_search', 'paid_social')
  AND order_date BETWEEN DATE '2026-03-01' AND DATE '2026-03-31';

GROUP BY:划分细分群组

GROUP BY 会将共享某个值的行汇总为每个群组一行。将它与 SUM、COUNT 和 AVG 等聚合函数结合,就能获得每个细分群组的指标。

这就是将原始事件转换为按渠道划分的效果表的方法。

SELECT channel,
       COUNT(*) AS sessions,
       SUM(revenue) AS revenue
FROM sessions
GROUP BY channel;

聚合函数

SUM 汇总收入,COUNT 统计事件数量,AVG 计算平均值,而 COUNT(DISTINCT ...) 统计不重复的用户数。

去重计数在营销中非常重要:会话总数和独立访客数是两个截然不同的数字。

SELECT campaign_id,
       COUNT(*) AS clicks,
       COUNT(DISTINCT user_id) AS reach,
       AVG(revenue) AS avg_order
FROM orders
GROUP BY campaign_id;

多列分组

按多个列分组可以构建矩阵,例如按渠道和设备分组。每种唯一组合都会成为自己的一行。

这样无需将任何内容导出到电子表格,就能进行更深入的细分。

SELECT channel, device,
       COUNT(*) AS sessions
FROM sessions
GROUP BY channel, device
ORDER BY channel, sessions DESC;

HAVING:筛选分组

WHERE 会在分组前筛选行;HAVING 会在聚合后筛选分组。使用 HAVING 仅保留超过阈值的细分群体。

例如,只显示带来超过 100 个订单的营销活动。

SELECT campaign_id, COUNT(*) AS orders
FROM orders
GROUP BY campaign_id
HAVING COUNT(*) > 100
ORDER BY orders DESC;

排序与限制

ORDER BY 会对结果排序,让最重要的行首先出现。LIMIT 会限制您看到的数量,非常适合生成前 N 项报告。

二者结合后,可以立即回答“按收入计算,排名前 5 的营销活动是什么?”

SELECT campaign_id, SUM(revenue) AS revenue
FROM orders
GROUP BY campaign_id
ORDER BY revenue DESC
LIMIT 5;

条件聚合

FILTER(或聚合函数中的 CASE)可以让一条查询同时计算多个条件指标,例如新客户与回头客的收入。

这样无需运行多条查询,还能让各个细分群体完全保持一致。

SELECT channel,
       SUM(revenue) FILTER (WHERE is_new_customer) AS new_rev,
       SUM(revenue) FILTER (WHERE NOT is_new_customer) AS repeat_rev
FROM orders
GROUP BY channel;

综合应用

完整的查询会组合所有子句:使用 WHERE 筛选行,进行分组,使用 HAVING 筛选分组,然后排序并限制结果数量。

从上到下阅读这条查询,您会看到它完整讲述了各个渠道的分析故事。

SELECT channel, SUM(revenue) AS revenue
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY channel
HAVING SUM(revenue) > 1000
ORDER BY revenue DESC;

快速检查

您只想保留订单数超过 50 的营销活动分组。哪个子句会筛选聚合后的分组?

回顾

SELECT 选择列,WHERE 筛选行,GROUP BY 划分细分群体,HAVING 筛选分组,ORDER BY 与 LIMIT 则决定输出形式。

借助条件聚合,您可以一次计算多个指标。下一步:使用 JOIN 组合多个表中的数据。

免费开始

用 AI 导师学习 Digital Marketing Academy — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
63
课程
239

常见问题解答

「SELECT、WHERE、GROUP BY」课时是免费的吗?

是的 — 「SELECT、WHERE、GROUP BY」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Digital Marketing Academy 课程的其余内容,请升级到 CoddyKit PRO。 Digital Marketing Academy 课程共包含 4 节课。

「SELECT、WHERE、GROUP BY」这节课中我会学到什么?

汇总广告系列数据 你通过在浏览器中直接运行的动手代码来练习 Digital Marketing Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Digital Marketing Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Digital Marketing Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「SELECT、WHERE、GROUP BY」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Digital Marketing Academy 课中编写并运行代码吗?

能。每节 Digital Marketing Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为什么营销人员学习 SQL
  2. SELECT、WHERE、GROUP BY
  3. 连接营销数据表
  4. 队列与漏斗查询
← 返回 Digital Marketing Academy