我有一张桌子,每个产品的销售都有一排。这些行包含日期。我想知道一个范围内每个不同日期销售的产品数量(用户指定开始日期和结束日期。)每个销售都有一个明确的行,因此在销售多个产品的日子里,存在多个具有此日期的行。我想计算这些行的数量,具有相同的日期。如何在postgresql中有效地完成这项工作?
实施例
2015-01-02: 0
2015-01-03: 7
2015-01-04: 2
答案 0 :(得分:1)
假设日期列存储为datetime
,这样的事情可以让你朝着正确的方向前进:
SELECT date_trunc('day', TIMESTAMP sales.date) as day, COUNT(*)
FROM sales
WHERE day >= start and <= end
GROUP BY day;
用户填写start
和end
。
有关postgres日期功能的更多文档,请点击此处: http://www.postgresql.org/docs/9.4/static/functions-datetime.html
如果他们不 datetime
,您可以使用to_date
函数和相应的格式字符串转换为datetime并使用上面的解决方案:
SELECT date_trunc('day', to_date('2015-01-02', 'YYYY-MM-DD'));
http://www.postgresql.org/docs/9.4/static/functions-formatting.html