获取第n行

时间:2016-01-19 19:58:12

标签: mysql laravel laravel-5

我有一张属于不同客户的销售表。

客户可以进行多次销售。

我如何计算每个客户/销售的第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')
...

似乎效率很低?

0 个答案:

没有答案