Я получаю ошибку
Database Exception – yii\db\Exception
SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "0.0001"
The SQL being executed was: select ad_id, sum(clicks) sc, sum(impressions) si, from ad_table group by keyword_id
having sum(clicks)/sum(impressions) < 0.0001
Error Info: Array
(
[0] => 22P02
[1] => 7
[2] => ERROR: invalid input syntax for integer: "0.0001"
)
↵
Caused by: PDOException
SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "0.0001"
Мой код
$sql = ...
."having sum(clicks)/sum(impressions) < :ctr ";
$ids = Yii::$app->db->createCommand($sql)
->bindValue(':ctr', (float)getConfigValue('ctr'))
->queryColumn();
Я попытался установить третий параметр в \PDO::PARAM_STR
, но он все же дал ту же ошибку. Я также попытался удалить (float)
, но такую же ошибку. Существует даже десятичный тип: http://php.net/manual/en/pdo.constants.php
Это работало в MySQL. Я переезжаю в Postgres. SQL работает непосредственно в psql
.
Ссылка: http://www.yiiframework.com/doc-2.0/yii-db-command.html#bindValue()-detail
В Postgres разделение двух целых чисел является целым делением, поэтому вы сравниваете целое число с поплавком.
select 2/3; -- returns 0
select 2/3.0; -- returns 0,6666…7
Попробуйте having sum(clicks)/cast(sum(impressions) as float4) < 0.0001
psql
?
yii\db\Query
хотя бы?