Прежде всего, вы не можете выполнять арифметику (математику) с псевдонимами в одном запросе с MySQL. Это также упоминается здесь .
Но вы можете вычислить, используя класс yii\db\Expression
, потому что при этом каркас не будет пытаться экранировать выражение в виде столбцов MySQL.
Таким образом, в основном вы должны выбрать выражение без псевдонимов и с классом Expression
.
Например:
$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',
new \yii\db\Expression('SUM( IF(status = "Passed", 1, 0) ) / SUM( IF(status = "On Hold", 1, 0) ) AS selfsubmit'),
'COUNT(*) AS total'
])
->from('qa3d')
->groupBy('date')
->all();