SequelizeとSQLiteでgroupbyを使用しているときに、特定の値に等しい行数を取得するにはどうすればよいですか?

mjfeintuch

があるテーブルがありemail, name, order_number, reviewます。これらのフィールドはすべてtextです。結果をemailグループ化し、の数を数えていorder_numberます。

reviewフィールドのいずれかである'Live''Failed'またはnull私は、これらの各値は、電子メールアドレスごとに発生した回数をカウントしたいと、新しい列に数を返す(review_live_countreview_failed_countおよびreview_null_count)。

これが私の現在のコードです:

let users = await db.reservations.findAll({
    attributes: ['email', 'name',[db.sequelize.fn('count', db.sequelize.col('order_number')), 'orders']], group: ["email"],
    raw:true
  });

Node、Sequelize、SQLiteを使用しています。Sequelizeそして、sequelizeの両方を介して露出されているdbオブジェクト。

エドウィンバブ

sequelizeリテラルを使用してみてください

let users = await db.reservations.findAll({
attributes: [
  'email', 
  'name',
  [db.sequelize.fn('count', db.sequelize.col('order_number')), 'orders'],
  [db.sequelize.literal(`COUNT (distinct "id") FILTER ( WHERE "review" = 'Live' )` ), 'review_live_count'],
  [db.sequelize.literal(`COUNT (distinct "id") FILTER ( WHERE "review" = 'Failed' )` ), 'review_failed_count'],
  [db.sequelize.literal(`COUNT (distinct "id") FILTER ( WHERE "review" is null )` ), 'review_null_count'],
],
group: ["email"],
raw:true
});

それが役に立てば幸い

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ