(NOW() - INTERVAL '60 days')
THEN '60-90 days ago'
END AS date_range,
COUNT(*) AS total_orders,
SUM(total_amount) AS total_sales
FROM orders
WHERE order_date BETWEEN (NOW() - INTERVAL '90 days') AND
(NOW() - INTERVAL '30 days')
GROUP BY date_range
ORDER BY date_range;
date_trunc -
轻松按日期汇总
间隔是一个非常简单的想法,但是一旦您需要做几个基本汇总,大多数基于
日期的数据分析都可以利用
date_trunc
函数。老实说,大多数人很少会使用
到间隔,可能是不太符合普通人的思维方式。
乍一看,
date_trunc
的名称可能表明它与格式有关,但请继续留意下面的
示例,它远不止于此。
date_trunc
是进行分析时查询工具箱中的一个重要部
分。
date_trunc
允许您按任何日期对数据进行切片和切块,准确查看获取有
洞察力的汇总分析所需的内容。
下面是一个示例查询,其中显示了每个月的订单数量和总订单销售额。
SELECT
date_trunc('month', order_date) AS month,
COUNT(*) AS total_orders,
SUM(total_amount) AS monthly_total
FROM
orders
GROUP BY
date_trunc('month', order_date)
ORDER BY
month;
month | total_orders | monthly_total
---------------------+--------------+---------------
2024-08-01 00:00:00 | 11 | 2699.82
2024-09-01 00:00:00 | 39 | 8439.41
(2 rows)
GROUP BY
确保每行都会收集
date_trunc
部分的汇总。当您将
date_trunc
与
GROUP BY
结合使用时,您将根据截断日期聚合结果。这样,
您就可以汇总每个唯一的截断日期的数据(如计数、总和、平均值)。
按天汇总
SELECT
date_trunc('day', order_date) AS day,
SUM(total_amount) AS daily_total
FROM
评论