Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
U uql
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 6
    • Issues 6
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • open-source
  • uql
  • Issues
  • #8

Closed
Open
Created Jun 23, 2017 by Jin Hu@hujinOwner

聚合查询的一些思路

整体思路,把结果集抽象成一个 table,然后对这个 table 应用多个 pipeline 函数,最终得到处理后的结果,下面是一些案例~

  1. 每个每个用户状态中人的数量

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
	},
	...
]
  1. 在 2 的基础上获取用户信息

GET /orders?$apply=groupby('uid', sum(price) as totalPrice)&$load=users for uid

[
	{
		uid: 1,
		totalPrice: 10.0,
		user: {}
	}
]
  1. 行转列?

/selections?$apply=col2row('rid', 'class.schedules.day,class.schedules.lesson')

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking