Yii2 объединяет несколько подсчетов и групп по запросу - PullRequest
0 голосов
/ 16 января 2019

У меня есть проект, где они имеют 3 статуса. Теперь мне нужно посчитать, сколько каждого статуса в день и общее количество.

Я могу перечислить их отдельно. Но не знаю, как их объединить.

Вот мой код:

    $passed_counts = (new \yii\db\Query())
    ->select(['date', 'week', 'count(sku) as sku'])
    ->from('qa3d')
    ->where(['status' => 'Passed'])
    ->groupBy('date')->all();

    $failed_counts = (new \yii\db\Query())
    ->select(['date', 'week', 'count(sku) as sku'])
    ->from('qa3d')
    ->where(['status' => 'Failed'])
    ->groupBy('date')->all();

    $onhold_counts = (new \yii\db\Query())
    ->select(['date', 'week', 'count(sku) as sku'])
    ->from('qa3d')
    ->where(['status' => 'On Hold'])
    ->groupBy('date')->all();

    $total_counts = (new \yii\db\Query())
    ->select(['date', 'week', 'count(sku) as sku'])
    ->from('qa3d')
    ->groupBy('date')->all();

Прямо сейчас с этим я могу перечислить их отдельно в 4 таблицах. Я хочу объединить их в один стол вот так, но не знаю как.

date Passed Failed On Hold Total

2019-01-16 1 4 2 7

2019-01-17 1 0 2 3

Пожалуйста, помогите мне с этим.

Спасибо.

1 Ответ

0 голосов
/ 16 января 2019

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

$data = (new \yii\db\Query())
->select([
    'date', 
    'SUM( IF(status = "Passed", 1, 0) ) AS passed', 
    'SUM( IF(status = "Failed", 1, 0) ) AS failed', 
    'SUM( IF(status = "On Hold", 1, 0) ) AS onhold', 
    'COUNT(*) AS total'
])
->from('qa3d')
->groupBy('date')
->all();
...