我想从昨天开始预订。这是我的代码:
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
希望有人能够帮助我。它可能是一个简单的解决方案,但我无法绕过它!
答案 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评论了它背后的推理!