Amazon Redshift - 按类别获取每周销售量

Posted

技术标签:

【中文标题】Amazon Redshift - 按类别获取每周销售量【英文标题】:Amazon Redshift - Get week wise sales count by category 【发布时间】:2018-06-14 08:31:02 【问题描述】:

我的每日销售数据如下。我正在尝试按销售周分组。

我尝试使用 group by 给出该期间的总计数,我如何修改查询以获得如下所示的输出:

预期输出:

Last N days,Count,Category

Last 7 days,225,Category_1
Last 14 days,136,Category_2
Last 7 days,172,Category_1
Last 14 days,321,Category_2

输入数据:

Date,*Sales*,Category

01-06-2018,10,Category_1
01-06-2018,19,Category_1
03-06-2018,3,Category_1
04-06-2018,13,Category_1
05-06-2018,10,Category_1
06-06-2018,14,Category_1
07-06-2018,20,Category_1
08-06-2018,49,Category_1
09-06-2018,5,Category_1
10-06-2018,4,Category_1 
11-06-2018,20,Category_1
12-06-2018,49,Category_1
13-06-2018,5,Category_1
14-06-2018,4,Category_1
01-06-2018,10,Category_1
01-06-2018,34,Category_2
03-06-2018,22,Category_2
04-06-2018,13,Category_2
05-06-2018,1,Category_2
06-06-2018,9,Category_2
07-06-2018,60,Category_2
08-06-2018,9,Category_2
09-06-2018,35,Category_2
10-06-2018,41,Category_2 
11-06-2018,2,Category_2
12-06-2018,9,Category_2
13-06-2018,35,Category_2
14-06-2018,41,Category_2

已尝试查询:

select count(*),Category from sales
group by Category;

我正在使用 Amazon Redshift DB。

谁能帮忙,谢谢..

截至 06/19 的更新:

select Category,
sum(case when date >= dateadd(day, -7, CURRENT_DATE) then count(sales) else 0 end) as count_07,
sum(case when date >= dateadd(day, -14, CURRENT_DATE) then count(sales) else 0 end) as count_14
from sales
group by Category

【问题讨论】:

【参考方案1】:

我会将值放在单独的列中。像这样的:

select category, 
       sum(case when date >= dateadd(day, -7, CURRENT_DATE) then sales else 0 end) as count_07,
       sum(case when date >= dateadd(day, -14, CURRENT_DATE) then sales else 0 end) as count_14
from sales s
group by category;

【讨论】:

感谢您的回复。当我尝试上述方法时,我收到一个错误“聚合函数调用可能没有嵌套的聚合或窗口函数”。能否请您指教。 @darkhorse 。 . .没有嵌套函数,所以我不知道这样的错误会来自哪里。 我已在初始帖子中添加了更新后的查询(标题为“从 06/19 开始更新”)。我已将列名编辑为“销售”,并且正在尝试查找记录数。运行此查询会引发错误“聚合函数调用可能没有嵌套聚合或窗口函数”。你能帮忙吗? Tnx..【参考方案2】:

看起来您离解决方案只有一个DATEADD。

7天应该是这样的:

Select Count(*),Category From sales Where Date >= Dateadd(day,-7, CURRENT_DATE)

按类别分组;

-7 更改为 -14 以获取最后 14 天。

【讨论】:

以上是关于Amazon Redshift - 按类别获取每周销售量的主要内容,如果未能解决你的问题,请参考以下文章

在 Amazon Redshift 中按日期透视查询

Amazon Redshift VACUUM 按架构还是按数据库运行?

Amazon Redshift 从 JSON 获取所有密钥

Amazon Redshift:获取最新的行查询

在 Redshift 中按类别选择 n 个最大计数

使用 Python 和 Boto3 获取列表集群 Amazon Redshift