запрос: получить 3 записи, которые имеют более высокое значение - PullRequest
0 голосов
/ 07 июня 2018

Я хочу получить 3 symbol_id, которое имеет более высокое buy_rate значение

finaltrades структура таблицы:

id   user_id   exchange_id   market_id   symbol_id      buy_datetime          sell_datetime      buy_rate   sell_rate   quantities  
 ---- --------- ------------- ----------- ----------- --------------------- --------------------- ---------- ----------- ------------ 
   1         1             1           1          96   2018-05-25 18:13:26   0000-00-00 00:00:00       2205           0          100  
   2         1             1           1          96   0000-00-00 00:00:00   2018-05-25 18:13:59       500        6680          100  
   3         4             1           1          23   2018-05-25 18:16:27   0000-00-00 00:00:00        120           0           10  
   4         1             1           1          96   2018-05-25 18:13:59   0000-00-00 00:00:00      50351           0           30  
   5         1             1           1          15   0000-00-00 00:00:00   2018-05-25 18:34:46       750         100          150  
   6         4             1           1         573   2018-05-26 09:29:17   2018-05-27 03:10:09       107          10           10  
   7         1             1           1          15   2018-05-11 09:30:54   2018-05-25 18:34:56         40         100           40

вот что я пришелдо сих пор:

public function HigherValue(){

            $higher_value = DB::table('finaltrade')
                          ->select 'buy_rate'> (select 'buy_rate')
                          ->get();

             return response()->json($higher_value);
             }

Ответы [ 4 ]

0 голосов
/ 07 июня 2018

Вы можете использовать DISTINCT, чтобы получить различные идентификаторы символов, отсортированные по buy_rate

SELECT DISTINCT symbol_id
FROM finaltrade
ORDER BY buy_rate DESC
LIMIT 3;

Демо

DB::table('finaltrade')
    ->orderBy('buy_rate', 'desc')
    ->distinct()
    ->limit(3)
    ->get();
0 голосов
/ 07 июня 2018

попробуйте

public function HigherValue() 
{
     $higher_value = DB::table('finaltrade')
         ->select('symbol_id')
         ->orderBy('buy_rate', 'DESC')
         ->limit(3)
         ->get();

     return response()->json($higher_value);
}
0 голосов
/ 07 июня 2018

Если вы хотите, чтобы три различных symbol_id имели самый высокий курс покупки, вы можете попробовать следующее:

public function HigherValue() {
    $higher_value = DB::table('finaltrade')
        ->select('symbol_id')
        ->groupBy('symbol_id')
        ->orderByRaw('MAX(buy_rate) DESC')
        ->limit(3)
        ->get();

    return response()->json($higher_value);
}

Это будет соответствовать следующему необработанному запросу MySQL:

SELECT symbol_id
FROM finaltrade
GROUP BY symbol_id
ORDER BY MAX(buy_rate) DESC
LIMIT 3;
0 голосов
/ 07 июня 2018
public function HigherValue() 
{
     $higher_value = DB::table('finaltrade')
         ->select('symbol_id')
         ->orderByDesc('buy_rate')
         ->limit(3)
         ->get();

     return response()->json($higher_value);
}

Попробуйте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...