Yii2结合多个count和group by查询

Sao*_* Ho 0 yii2 yii2-basic-app

我有一个项目,他们有 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();
Run Code Online (Sandbox Code Playgroud)

现在我可以将它们分别列在 4 个表中。我想像这样将它们组合在一张表中,但不知道如何。

date Passed Failed On Hold Total

2019-01-16 1 4 2 7

2019-01-17 1 0 2 3

请在这件事上给予我帮助。

谢谢。

Fab*_*lli 5

尝试这个:

$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();
Run Code Online (Sandbox Code Playgroud)