【问题标题】:Counting the number of sales for each date in a date range, postgresql计算日期范围内每个日期的销售数量,postgresql
【发布时间】:2015-05-12 19:40:49
【问题描述】:

我有一个表格,每销售一个产品都有一行。这些行包括一个日期。我想知道在一个范围内每个不同的日子销售的产品数量(用户指定开始和结束日期。)每次销售都有一个不同的行,所以在销售几种产品的日子里,存在这个日期的几行.我想用相同的日期计算这些行的数量。这如何在 postgresql 中有效地完成?

例子

2015-01-02: 0
2015-01-03: 7
2015-01-04: 2

【问题讨论】:

  • 这些日期是 postgresql datetimes 还是 varchars
  • @dal102 - 它们是 varchars(在这种情况下是不可避免的)
  • 我在下面的回答中添加了处理任何一种情况的信息。

标签: postgresql


【解决方案1】:

假设日期列存储为datetime,这样的事情应该会让你朝着正确的方向前进:

SELECT date_trunc('day', TIMESTAMP sales.date) as day, COUNT(*)
FROM sales
WHERE day >= start and <= end
GROUP BY day;

其中startend由用户填写。

有关 postgres 日期功能的更多文档可在此处找到: http://www.postgresql.org/docs/9.4/static/functions-datetime.html


如果它们不是datetime,您可以使用带有适当格式字符串的to_date函数来转换为日期时间并使用上面的解决方案:

SELECT date_trunc('day', to_date('2015-01-02', 'YYYY-MM-DD'));

http://www.postgresql.org/docs/9.4/static/functions-formatting.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多