があるテーブルがありemail, name, order_number, review
ます。これらのフィールドはすべてtext
です。結果をemail
でグループ化し、の数を数えていorder_number
ます。
値review
フィールドのいずれかである'Live'
、'Failed'
またはnull
。私は、これらの各値は、電子メールアドレスごとに発生した回数をカウントしたいと、新しい列に数を返す(review_live_count
、review_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]
コメントを追加