我有一张桌子,每销售一种产品就有一行。这些行包括一个日期。我想知道某个范围内每个不同日期的产品销售数量(用户指定开始日期和结束日期。)每次销售都有一个不同的行,因此在销售多个产品的日期中,存在多个带有该日期的行。我想计算同一日期的这些行的数量。如何在Postgresql中有效地完成这项工作?
例子
2015-01-02: 0
2015-01-03: 7
2015-01-04: 2
假设date列存储为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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句