暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
需要按日期汇总数据吗?其实 PostgreSQL 比 Excel 更方便!.doc
83
8页
8次
2025-04-28
免费下载
需要按日期汇总数据吗?其实
PostgreSQL
Excel
更方
便!
原创 红石
PG
Excel
中,我们经常需要按日期查询和汇总数据。其实,要做到这一点,
PostgreSQL
Excel
更简单,而且支持处理的数据量也大得多。
介绍
例如,当您的销售数据日期以时间戳格式存储,但现在您需要按天、周、季
度和月获取报告。您需要将销售数据汇总到易于查看的报告中。您需要
BI
工具
吗?实际上还没有必要。您的
Postgres
数据库中具有数百个函数,可让您按
日期查询数据分析。通过使用一些好的传统
SQL
,您可以对任何数据集的日期
详情,获得强大的分析和商业智能。
在本文中,我们会介绍一些用于日期查询和汇总的关键函数。有关在
PostgreSQL
中存储日期和时间的最佳方法的总结,请参阅在
PostgreSQL
处理时间。
日期间隔
interval
是一种数据类型,可以修改其他时间相关数据,并可用于时间和日
期查询。间隔类型非常方便,是您可以按日期快速汇总数据的第一选择。
下面是一个示例查询,它将计算过去
90
天内的订单总数。
SELECT SUM(total_amount)
FROM orders
WHERE order_date >= NOW() - INTERVAL '90 days';
间隔值可以有两种写法,也可以用强制转换。这本质上是完全相同的查询。
SELECT SUM(total_amount)
FROM orders
WHERE order_date >= NOW() - '90 days'::interval;
您还可以对更复杂的问题使用间隔。您可以选择时间范围,并且可以对多个
间隔进行比较。
在此示例查询中,您可以使用
CASE
语句创建多个间隔范围。
SQL
中的
CASE
语句用于在查询中执行条件处理,类似于编程中的
if-else
结构。在下面
的查询中,它用于将订单分类为不同的时间范围(例如,“
30-60
天前”、“
60-
90
天前”)。
SELECT
CASE
WHEN order_date BETWEEN (NOW() - INTERVAL '60 days') AND
(NOW() - INTERVAL '30 days')
THEN '30-60 days ago'
WHEN order_date BETWEEN (NOW() - INTERVAL '90 days') AND
(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
of 8
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜