【发布时间】:2014-11-05 08:00:10
【问题描述】:
我有一个表,其中每一行都是具有唯一 order_id 的唯一订单,但用户可以有多个行/订单。
订单表 -> order_id、user_id、orderedat (datetime)、sales
我正在尝试返回一个查询,该查询针对每个 order_id 计算关联用户之前的订单数量。 (本质上,这一行是代表用户的一阶?五阶?二十阶?等等)
我正在尝试类似这样的嵌套选择,但收到错误“用作表达式的子查询返回的不止一行。”
SELECT
order_id,
user_id,
COUNT (order_id) AS order_n
FROM
orders
WHERE orderedat >= (
SELECT
orderedat
FROM
fulfillments
GROUP BY
order_id
)
GROUP BY
order_id
关于如何在 postgres 中实现这一点有什么想法吗?
////////////// 更复杂的情况:使用另一个名为“状态”的列,如何只计算状态中具有特定值的行?我只想跳过号码中的订单,除非它们的状态为“已付款”或“已下单”。例如:
data:
order_id user_id orderedat status
001 max 10/1/14 paid
002 max 10/20/14 placed
003 max 10/21/14 cancelled
004 bill 10/5/14 deleted
005 max 10/31/14 paid
006 bill 10/24/14 placed
results:
order_id user_id orderedat orders_so_far
001 max 10/1/14 1
002 max 10/20/14 2
003 max 10/21/14 null
005 max 10/31/14 3
004 bill 10/5/14 null
006 bill 10/24/14 1
【问题讨论】:
标签: postgresql select count subquery