SELECT count(DISTINCT p.id) FROM post p JOIN comment c on p.id = c.post_id вернёт вам количество уникальных id постов. То есть именно количество постов вне зависимости от того, сколько к каждому прилагается комментов.
SELECT count(*) FROM post p JOIN comment c on p.id = c.post_id вернёт вам не количество постов, а количество выбранных строк, то есть в данном случае количество комментов во всех постах.
Константин Т: запрос считает количество моделей Bill, а не количество возвращаемых строк. Возвращает сразу — это ожидаемо. Инстанциировать модели смысла нет.
Константин Т: при count() модели и не создаются. Если сделать all(), а не count(), то у вас в результате получится ровно 10 моделей Bill. Это вам count() и посчитал.