如何使用 Postgresql 计算 Rails 4 中的不同查询?

How to count distinct query in Rails 4 with Postgresql?

我有这个 ActiveRecord 查询:

Stock.select('DISTINCT ON (stocks.part_number)*').joins(:part, :manufacturer)
.includes(:manufacturer, :part).order(:part_number).with_cat(category).
where(manufacturers: {abbr: ['manufacturer1', 'manufacturer2']})

with_cat是一个范围:

scope :with_cat, -> (category) { where(parts: {category_id: category}) }

现在我使用 Distinct on 的原因是因为每个制造商都可以拥有与另一个制造商相同的零件,因此重复。我不想重复。以上完成了工作。除非我在其中添加 count 时出现错误。

PG::SyntaxError: ERROR:  syntax error at or near "ON"
LINE 1: SELECT COUNT(DISTINCT ON (stocks.part_number)*) FROM "stocks...
                              ^
: SELECT COUNT(DISTINCT ON (stocks.part_number)*) FROM "stocks" 
INNER JOIN "parts" ON "parts"."id" = "stocks"."part_id" 
INNER JOIN "manufacturers" ON "manufacturers"."id" = "stocks"."manufacturer_id" 
WHERE "parts"."category_id" = 17 AND "manufacturers"."abbr" IN ('manufacturer1', 'manufacturer2')

不太确定如何在不导致该错误的情况下向查询添加计数。我也不熟悉 Distinct on。任何关于为什么会发生这种情况的解释都会很棒!

如果在 distinct 之前使用计数,是否可以修复查询?明白 this postgres documentation.

的想法
Stock.select('count(distinct part_number)')...