我有下表关于每家商店售罄的商品。
表格列
数据
shop_id sold time
1 12.44 23/10/2014 20:20
1 12.77 24/10/2014 20:18
1 10.72 24/10/2014 20:18
1 14.51 24/10/2014 20:18
2 5.94 22/10/2014 20:11
2 15.69 23/10/2014 20:23
2 8.55 24/10/2014 20:12
2 6.96 24/10/2014 20:18
3 8.84 22/10/2014 20:21
3 7.82 22/10/2014 20:21
3 22.19 23/10/2014 20:23
3 13.21 23/10/2014 20:23
4 14.60 23/10/2014 20:20
4 12.19 23/10/2014 20:23
4 5.41 24/10/2014 20:18
4 10.93 24/10/2014 20:19
5 18.54 22/10/2014 20:21
5 7.48 22/10/2014 20:21
5 10.67 24/10/2014 20:18
5 15.96 24/10/2014 20:18
每次购买我有3个分类器:
购买分类器
我想要做的是使用PostgreSQL编写一个查询,该查询将按照每种类型的购买分类器生成每天的总购买量。
所需的输出
date low medium high
22/10/2014 29.10 14.51 12.77
23/10/2014 0 0 70.06
24/10/2014 16.34 51.24 41.39
非常感谢你的帮助。我对postgreSQL没有经验。我很容易在R中做到这一点,但是因为将一个巨大的数据库表移动到R非常麻烦,我需要学习一些postgreSQL。
答案 0 :(得分:3)
我相信你可以使用像这样的条件聚合来做到这一点:
select
cast(time as date),
sum(case when sold > 0 and sold <= 8 then sold else 0 end) as low,
sum(case when sold > 8 and sold <= 12 then sold else 0 end) as medium,
sum(case when sold > 12 then sold else 0 end) as high
from your_table
group by cast(time as date);
您可能需要稍微调整一下范围 - 8应该分为低和中等?另外,我不记得cast("time" as date)
是否是Postgresql的正确语法 - 我怀疑它可能不是,但只是用正确的函数替换该部分以从datetime / timestamp列获取日期。应该是"time"::date