例えば、特定の会社に所属するアカウントの新規作成数を月次で集計したい場合(そんな状況があるのかどうかはさておき)
想定結果
| month | cnt |
|---|---|
| 2020-03 | 10 |
PostgreSQL
SELECTTO_CHAR(created_date,'YYYY-mm')ASmonth,COUNT(user_id)AScreated_cntFROMusersWHEREcompany_id=1GROUPBYmonthSequelize
constsequelize=require('sequelize');constuserCtrl=require('../models/userCtrl')...constres=awaituserCtrl.findAll({attributes:[[sequelize.fn('to_char',sequelize.col('created_date'),'YYYY-mm'),'month'],[sequelize.fn('count',sequelize.col('user_id')),'created_cnt']],where:{company_id:1,},group:['month'],});sequelize.fn...データベース関数を指定sequelize.col...対象のカラムを指定
蛇足
MySQLではTO_CHAR関数の代わりにDATE_FORMAT関数を使う
指定するフォーマットには、「%」文字をつける
SELECTDATE_FORMAT(created_date,'%Y-%m')ASmonth,COUNT(user_id)AScreated_cnt...