2016-04-26 51 views
0

重複計數我試圖讓與sequ​​elize這樣的重複計數爲與sequ​​elize

'SELECT COUNT(DISTINCT(age)) AS `count` FROM `Persons` AS `Person`' 

只要我使用原始查詢,我得到了想要的結果。然而,當我換到sequelize計數功能,查詢是Postgres的朗聲道:

Person.count({distinct:'age'}).then(...); 

結果

'SELECT COUNT(DISTINCT(*)) AS `count` FROM `Persons` AS `Person`' 

導致語法錯誤。在不同的帖子中描述的解決方案(如How to get a distinct count with sequelize?)不起作用,除非您添加一個include語句或where子句,這是我在這種特殊情況下沒有的。

有沒有人知道這個適當的解決方案?

回答

1

您必須使用Sequelize aggregation才能使其正常工作。

Model.aggregate(field, aggregateFunction, [options])

返回:返回集合結果投以options.dataType,除非 options.plain是假的,在這種情況下,完整的數據結果是 返回。

實施例:

Person.aggregate('age', 'count', { distinct: true }) 
    .then(function(count) { 
     //.. distinct count is here 
    }); 

執行(默認):

SELECT count(DISTINCT("age")) AS "count" FROM "persons" AS "person"; 
相關問題