考虑采用以下的表:取最近三个订单
- 客户电子邮件ID
- 付款方法(COD /网路银行/信用卡式/借记卡)
- 订单ID
- 订单创建日期
- 订单状态(成功/失败/取消)
如何从SQL中的这些表格中获取每个客户过去3个月的最后三个成功订单以及相关详细信息?
考虑采用以下的表:取最近三个订单
如何从SQL中的这些表格中获取每个客户过去3个月的最后三个成功订单以及相关详细信息?
这在MySQL中有点痛苦。可能最简单的方法是使用变量。
您的列名不清晰。和你有一些附加条件,但是这是基本的想法:
select t.*
from (select t.*,
(@rn := if(@c = customerid, @rn + 1,
if(@c := customerid, 1, 1)
)
) as rn
from t cross join
(select @rn := 0, @c := '') params
order by customerid, orderdate desc
) t
where rn <= 3;
您可以添加额外的where
条件的子查询。
我希望这有助于
SELECT *
FROM TABLENAME
WHERE OrderStatus='Success'
ORDER BY OrderCreationDate DESC
LIMIT 3;
这将返回3行,OP要为每个客户3行* –
看到这篇文章:HTTPS://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per- group-in-sql/ –