gpt4 book ai didi

sql - COUNT 和 GROUP BY 随着时间的推移

转载 作者:行者123 更新时间:2023-11-29 12:34:16 26 4
gpt4 key购买 nike

我需要在 PostgreSQL 中按天、周、月等创建销售报告。我有以下表格设置:

tbl_products:
id INT
name VARCHAR

tbl_purchase_order:
id INT
order_timestamp TIMESTAMP

tbl_purchase_order_items:
id INT
product_id INT (FK to tbl_products.id)
order_id (FK to tbl_purchase_order.id)

我需要创建一个 SQL 查询,返回在给定时间范围内购买给定产品的次数。也就是说,我需要查询给定产品 ID 在特定月份、日期、年份等中出现在采购订单项目中的次数。在较早的问题中,我了解了如何使用 date_trunc() 将我的 TIMESTAMP 列截断为我关心的那段时间。现在我面临着如何正确执行 COUNT 和 GROUP BY 的问题。

我已经使用 COUNT(XXX) 和 GROUP BY XXX 的各种组合尝试了几个查询,但似乎从来没有得出我期望的结果。有人可以指导我如何构建此查询吗?我更像是一名 Java 开发人员,所以我仍在加快 SQL 查询的速度。感谢您提供的任何帮助。

最佳答案

每年计数:

SELECT oi.product_id, 
extract(year from po.order_timestamp) as order_year
count(*)
FROM purchase_order_items oi
JOIN purchase_order po ON po.id = oi.order_id
GROUP BY extract(year from po.order_timestamp)

每月计数器:

SELECT oi.product_id, 
extract(month from po.order_timestamp) as order_month
extract(year from po.order_timestamp) as order_year
count(*)
FROM purchase_order_items oi
JOIN purchase_order po ON po.id = oi.order_id
GROUP BY extract(year from po.order_timestamp),
extract(month from po.order_timestamp)

关于sql - COUNT 和 GROUP BY 随着时间的推移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com