SELECT、WHERE、GROUP BY
汇总广告系列数据
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 反馈 — 无需本地设置。
此课程中的所有课时
- 为什么营销人员学习 SQL
- SELECT、WHERE、GROUP BY
- 连接营销数据表
- 队列与漏斗查询