Je recherche des requêtes group by
par le biais de Sequelize et ne semble pas pouvoir trouver de documentation.
SELECT column, count(column)
FROM table
GROUP BY column
numéro: https://github.com/sequelize/sequelize/issues/348
User.findAll({
group: ['field']
})
j'utilise [email protected]
Je pense que vous cherchez quelque chose comme ça:
Table.findAll({
attributes: ['column1',
sequelize.fn('count', sequelize.col('column2'))],
group: ["Table.column1"]
}).success(function (result) { });
Mise à jour: Les nouvelles versions de Sequelize utilisent .then au lieu de .success .
Table.findAll({
attributes: ['column1',
sequelize.fn('count', sequelize.col('column2'))],
group: ["Table.column1"]
}).then(function (result) { });
Grouper par avec nombre sequelize ORM
'field'
- vous pouvez renommer cette chaîne, c'est votre field(column)
dans la base de données
'count'
- chaîne réservée nécessaire pour obtenir count
dans sequelize
'cnt'
- vous pouvez renommer cette chaîne, c'est votre sortie count
Sequelize version 3.25.0
User.findAll({
attributes: ['field', [sequelize.fn('count', sequelize.col('field')), 'cnt']],
group: ['field'],
})
Essaye ça -
Table.count(
{
attributes: ['column'],
group: 'column',
}
Exemple: comment ajouter un alias pratique à la colonne de fonctions groupées.
Je l'ai fait en tant que réponse séparée principalement parce que le commentaire ne formaterait pas bien ... sinon, je l'aurais simplement ajouté à la réponse de Sampat.
function getSumsBySomeId() {
const criteria = {
attributes: ['some_id', [sequelize.fn('sum', sequelize.col('some_count')), 'some_count_sum']],
group: ['some_id'],
raw: true
};
return Table.getAll(criteria);
}
RENDEMENTS:
{ some_id: 42, some_count_sum: 100 },
{ some_id: 43, some_count_sum: 150 }
...
etc.
Votre code devrait ressembler à cela avec la norme ES6.
Table.findAll({ attributes: ['column1', sequelize.fn('count', sequelize.col('column2'))], group: ["Table.column1"] }).then( (result) => { })