我有一个这样的Postgres表:
| 租户ID|订单_今天| orders_today |
| - -----|- -----| ------------ |
| 租客2| 2| 2 |
| 租客1|一个| 1 |
| 租客1| 5个| 5 |
| 租客2| 2| 2 |
| 租客1| 5个| 5 |
请注意,tenant 2的orders_today尚未在时间12:00生成。
我使用这样的查询来汇总今天的订单:
SELECT datetime, SUM(orders_today)
FROM orders
GROUP BY datetime
但这给了我这个结果:
| 总和| sum |
| - -----| ------------ |
| 三个| 3 |
| 七个| 7 |
| 5个| 5 |
如何使其忽略时间12的组,其中缺少租户2的计数?如果可能的话,我可以让它使用租户2从时间11开始的前一个值吗?
2条答案
按热度按时间pwuypxnk1#
如果我理解正确的话,如果缺少租户,您希望排除一组datetime,如果是这样,您可以使用
having
子句,条件是每个datetime的租户数量必须等于租户总数:azpvetkf2#
我可以让它使用租户2从时间11开始的前一个值吗?
假设:
(datetime, tenant_id)
是PRIMARY KEY
。因此:UNIQUE
和第b列NOT NULL
。从tenant & timestamp生成所有感兴趣的组合,
LEFT JOIN
到您的表,LEFT JOIN
到可能的替代品,然后继续:fiddle
相似:
如果我的假设不成立,你得说得更具体些。