web-dev-qa-db-fra.com

Comment fonctionne group by en sequelize?

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
29
user964287

numéro: https://github.com/sequelize/sequelize/issues/348

User.findAll({
 group: ['field']
})

j'utilise [email protected]

42
ahiipsa

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) { });
41
Sampat Badhe

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'],
})
6
аlex dykyі

Essaye ça -

Table.count(
{
   attributes: ['column'], 
   group: 'column',
} 
1
codejunkie

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.
1
treejanitor

Votre code devrait ressembler à cela avec la norme ES6. 

Table.findAll({ attributes: ['column1', sequelize.fn('count', sequelize.col('column2'))],   group: ["Table.column1"]  }).then( (result) => { })