postgresql Redshift中的每周平均报告

ef1yzkbh  于 2023-03-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(120)

我的销售数据为前两个星期的六月,星期一日期即1日6月,8日6月如下:
| 日期|计数|
| --------------|--------------|
| 2015-06-01 03:25:53|1|
| 2015-06-01 03:28:51|1|
| 2015-06-01 03:49:16|1|
| 2015-06-01 04:54:14|1|
| 2015-06-01 08:46:15|1|
| 2015-06-01 13:14:09|1|
| 2015-06-01 16:20:13|五|
| 2015-06-01 16:22:13|1|
| 2015-06-01 16:27:07|1|
| 2015-06-01 16:29:57|1|
| 2015-06-01 19:16:45|1|
| 2015-06-08 10:54:46|1|
| 2015-06-08 15:12:10|1|
| 2015-06-08 20:35:40|1|
我需要找到一个给定的范围内每周平均销售额。
复杂查询:

(some_manipulation_part), ifact as 
   ( select date, sales_count from final_result_set)
select date_part('h',date )) as h,
       date_part('dow',date )) as day_of_week,
       count(sales_count)
from final_result_set
group by h, dow;

输出:
| h|星期几|计数|
| --------------|--------------|--------------|
| 三|1|三|
| 四|1|1|
| 八|1|1|
| 10个|1|1|
| 十三|1|1|
| 十五岁|1|1|
| 十六岁|1|八|
| 十九|1|1|
| 二十|1|1|
如果我尝试在上面的最终结果上应用avg,它实际上并没有得到正确的答案!

(some_manipulation_part), ifact as 
(select date, sales_count from final_result_set)
select date_part('h',date )) as h,
       date_part('dow',date )) as day_of_week, 
       avg(sales_count) 
from final_result_set
group by h, dow;
h星期几平均值
11
11
11
10个11
十三11
十五岁11
十六岁11
十九11
二十11

所以我有两个星期一在给定的范围内,它实际上并没有被它除,我甚至不确定在红移内部发生了什么。

q3qa4bjr

q3qa4bjr1#

使用**date_trunc()**获得“每周平均值”。
Postgres手册。
Redshift manual.

SELECT date_trunc('week', my_date_column) as week
     , avg(sales_count) AS avg_sales
FROM   final_result_set
GROUP  BY 1;

如果你按一周中的某一天分组(DOW),你会得到 * 每个工作日 * 的平均值,而星期天是0。
旁白:“date”是SQL中的保留字,也是一个基本类型名称,不要将其用作标识符。

相关问题