2017-04-12 6 views
0

私はsequelizeでgroupwise maximumを実行しようとしましたが、生のクエリ以外の解決策は見つかりませんでした。Sequelize groupwise maxium

たとえば、1:mの関連付けがあります。 symbolsテーブルには多くの行がcompany_key_statisticsテーブルにあります。 company_key_statisticsには列が作成された時を示すタイムスタンプである列createdAtがあります。最新のsymbolscompany_key_statisticsで参加する必要がありますが、最新のcompany_key_statisticsのみ必要です。たとえば、ORCLシンボルとMSFTシンボルを取得し、最新のcompany_key_statisticsシンボルのみを取得する必要があります。

組み込みのメソッドを後付けするか、生きたクエリのみを使用してこのようなことを行うことは可能でしょうか?

UPDATE

私は同じthis質問をしていたが、無地のMySQLのために、多分この質問に基づいて、誰かがsequelizeに対処する方法を答えることができます。 ありがとうございます!

+0

でしたか? – Adiii

+0

@Adiii、助けてくれてありがとう、残念ながら、これは私が望んでいたものではありません。 –

+0

私はここであなたが望むものをいくつかのコードロジックと共有することができます – Adiii

答えて

0

それは

var models = require('./database/models'); //path to your models 
var user = require('./database/models').user; //path to your user models 

user.findAll(
    {group: 'age', 

    order: [ 
    [models.sequelize.fn('max', models.sequelize.col('age')), 'DESC'], 
    // will return max(`age`) DESC and will groupby age 
    ] 
    } 
).then(function(result) 
        { 
    res.json(result) 
}) 

私のオプションで詳しく

manipulating-the-dataset-with-limit-offset-order-and-group

raw-queries

getting-started-with-sequelize-and-the-sequelize-cli

1

のために両方の方法で可能です!私はこれを与えるだろうと思いますあなたの助けを借りて

   sql.findAll({ 
         attributes: [ 
          [sqldb.sequelize.fn('MAX', sqldb.sequelize.col('price')), "max"] 
         ], 
         group: [ 
          "key" 
         ], 
         order: [ 
          "key" 
         ], 
        })