聚合查询的一些思路
整体思路,把结果集抽象成一个 table,然后对这个 table 应用多个 pipeline 函数,最终得到处理后的结果,下面是一些案例~
- 每个每个用户状态中人的数量
GET /users?$apply=groupby('status', count() as count)
[
{
status: 1,
count: n,
},
...
]
GET /orders?$apply=groupby('uid', sum(price) as totalPrice)
[
{
uid: 1,
totalPrice: 10.0
},
...
]
- 在 2 的基础上获取用户信息
GET /orders?$apply=groupby('uid', sum(price) as totalPrice)&$load=users for uid
[
{
uid: 1,
totalPrice: 10.0,
user: {}
}
]
- 行转列?
/selections?$apply=col2row('rid', 'class.schedules.day,class.schedules.lesson')