我的销售数据为前两个星期的六月,星期一日期即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 | 星期几 | 平均值 |
---|---|---|
三 | 1 | 1 |
四 | 1 | 1 |
八 | 1 | 1 |
10个 | 1 | 1 |
十三 | 1 | 1 |
十五岁 | 1 | 1 |
十六岁 | 1 | 1 |
十九 | 1 | 1 |
二十 | 1 | 1 |
所以我有两个星期一在给定的范围内,它实际上并没有被它除,我甚至不确定在红移内部发生了什么。
1条答案
按热度按时间q3qa4bjr1#
使用**
date_trunc()
**获得“每周平均值”。Postgres手册。
Redshift manual.
如果你按一周中的某一天分组(
DOW
),你会得到 * 每个工作日 * 的平均值,而星期天是0。旁白:“date”是SQL中的保留字,也是一个基本类型名称,不要将其用作标识符。