PostgreSQL:试图找回昨天的计数

时间:2016-07-21 21:21:27

标签: sql postgresql

我想从昨天开始预订。这是我的代码:

SELECT COUNT(distinct be.booking_id) AS "Number of Bookings Approved Today",
       TO_CHAR(be.created_at, 'yyyy-mm-dd') as "id"
FROM booking_events be
WHERE be.event IN ('approve', 'instant_approve') AND
      be.created_at > TIMESTAMP 'yesterday' AND
      be.created_at < TIMESTAMP 'today'
GROUP BY be.created_at;

现在,上面的代码不会让我查看昨天预订的实际数量。而是它检索所有这样的行:

Date           # of bookings
<yesterday's date>       1
<yesterday's date>       1
<yesterday's date>       1
<yesterday's date>       1
<yesterday's date>       1
<yesterday's date>       1
<yesterday's date>       1

我希望它能像这样返回昨天的总计数:

Date,          # of bookings
<yesterday's date>       7

希望有人能够帮助我。它可能是一个简单的解决方案,但我无法绕过它!

2 个答案:

答案 0 :(得分:1)

也许be.created_at是带时间部分的时间戳?

尝试将group by子句更改为TO_CHAR(be.created_at, 'yyyy-mm-dd'),以便分组仅由日期部分完成。或者,您可以将group by与序号值一起使用,以指示select语句中的列分组:group by 2(对于第二列 - 示例查询中的日期)。

答案 1 :(得分:0)

我意识到我必须GROUP BY 2。 @jpw评论了它背后的推理!