我有一张属于不同客户的销售表。
客户可以进行多次销售。
我如何计算每个客户/销售的第n次销售?
我正在使用Laravel,但一个普通的MySQL答案也同样好。
我的查询构建器是:
$q = DB::table('sales AS S')
->select(DB::raw('CONCAT("row_", S.id) AS DT_RowId'),
'S.id', 'S.created_at', 'users.name AS agent',
DB::raw('CONCAT(C.first_name, " ", COALESCE(C.last_name, "")) AS name'), 'S.net',
DB::raw('(S.net - P.base_buy_price) AS margin'),
DB::raw('((S.net - P.base_buy_price)/P.base_price * 100) AS margin_percent'))
->join('users', 'users.id', '=', 'S.user_id')
->join('customers AS C', 'C.id', '=', 'S.customer_id')
->join('products AS P', 'P.id', '=', 'S.product_id')
->get();
澄清
让我们说客户A已经在2015-06-12,2015-06-17和2016-01-17的日期买了三次。
在结果中,我希望这些行中的每一行都告诉我哪个销售是n。即:
2015-06-12 - 第一次销售
2015-06-17 - 第二次销售
2016-01-17 - 第3次销售
...
DB::raw('(SELECT COUNT(*) FROM sales WHERE sales.created_at <= S.created_at AND sales.customer_id = C.id) AS nth')
...
似乎效率很低?