подсчет уникальных записей 2 столбцов - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть следующая таблица:

Schema::create('tracks', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('user_id')->unsigned()->nullable()->index();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->string('ip');
        $table->string('session');
        $table->string('roboname')->nullable();
        $table->string('language');
        $table->string('referer');
        $table->string('path');
        $table->string('device');
        $table->string('screensize');
        $table->string('browser');
        $table->string('browser_version');
        $table->string('os');
        $table->string('os_version');
        $table->string('url');
        $table->string('full_url');
        $table->boolean('is_mobile');
        $table->boolean('is_tablet');
        $table->timestamps();
    });

Я хочу подсчитать все уникальные записи сессии и пути. Каков наилучший способ сделать это? пример:

session | path
123 /test
123 /test1
123 /test
321 /test
321 /test

Результат здесь будет 3.

Ответы [ 3 ]

1 голос
/ 08 февраля 2020

Вы можете использовать следующее решение:

SELECT COUNT(DISTINCT session, path) FROM tracks;

Этот запрос возвращает количество различных композиций сеанса и пути

1 голос
/ 08 февраля 2020

при условии, что у вас есть 2 столбца session , path, вы можете использовать счетчик для конкатета

 select count(distinct concat(session,path)) my_count 
 from  my_table 
0 голосов
/ 09 февраля 2020

Вы можете использовать count discount ifnull на Eloquent, как это:

Track::select(DB::raw("COUNT(DISTINCT IFNULL(session, ''), IFNULL(path, '')) AS session_path_count"))
      ->first()
      ->session_path_count;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...