Посмотрите в
доку. Там на большую часть ваших вопросов есть ответы. Вот, например про вложенные селекты:
$subQuery = (new Query())->select('COUNT(*)')->from('user');
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`
$query = (new Query())->select(['id', 'count' => $subQuery])->from('post');
Если вам модели не требуются, можно использовать просто DAO
$sql = "SELECT
iu.*, u.banned, u.foto,
(SELECT SUM(rating)/COUNT(*)
FROM `olit_insurance_reviews`
WHERE company_id = u.user_id and rating > :rating AND parent_id IS NULL) as rating,
(SELECT COUNT(*)
FROM `olit_insurance_reviews`
WHERE company_id = u.user_id AND parent_id IS NULL) as reviews_count
FROM `olit_insurance_users` as iu
INNER JOIN `olit_users` as u
ON u.user_id = iu.user_id
WHERE u.user_group = :userGroup ORDER BY u.banned DESC, iu.company_name ASC";
$cmd = Yii::$app->db->createCommand($sql, [':userGroup' => 6, ':rating' => 0]);
$items = $cmd->queryAll();