Skip to main content

简介

Agile Query 函数与公式与传统数据库中的SQL 不同,传统数据库中的函数和表达式,通常是针对单张表,或单个数据集,而Agile Query 中函数和表达式可以包含多张表。 传统数据库SQL 中的聚合函数,不允许嵌套,如果需要进行嵌套聚合时,同样,也需要进行拆分子查询。在Agiel Query中,当单个表达式与其它维度或表达式进行组合分析时, 实际编译的SQL 也会有所不同。

多表计算表达式

例如:统计客单价,业务计算公式为:销售额 / 订单数量,销售额来自于订单明细表,订单数据来自于订单表,用传统数据库SQL 进行统计时,需要拆分多个不同的子查询, 而在Agile Query 中,仅需要一个公式,公式如下:

SUM(order_details.quantity * order_details.unit_price) / COUNT(orders.order_id)
DIVIDE(
order_details.quantity * order_details.unit_price,
COUNT(orders.order_id)
)

例如:统计某品类的销售额,公式如下:

SUM_IF(
categories.category_name = '海鮮',
order_details.quantity * order_details.unit_price
)
https://www.agiquery.com

嵌套聚合

例如:统计月均销售额(数据库表中以年月日的形式存储),在传统数据库SQL 中需要拆分两层子查询,而Agile Query 中,仅需要一个公式,公式如下:

AVG(
GROUP_SUM(order_details.quantity * order_details.unit_price, TO_MONTH(orders.order_date))
)

例如:统计复购率,业务计算公式为:订单数量大于2 的客户数量 / 所有客户数量,公式如下:

PERCENTAGE(
COUNT_IF(GROUP_COUNT(orders.order_id, customers.customer_id) > 2),
COUNT(customers.customer_id)
)
https://www.agiquery.com

多维度聚合计算

例如:统计商品的销售额占比和销售额在品类内的占比

PERCENTAGE(
SUM(order_details.unit_price * order_details.quantity),
GROUP_SUM(order_details.unit_price * order_details.quantity, categories.category_name)
)
https://www.agiquery.com

高级分析函数

例如:统计销售额月增长率,公式如下:

GROWTH_OF(
SUM(order_details.quantity * order_details.unit_price),
orders.order_date,
'MONTHLY',
1
)

例如:统计某商品的订单数量月增长率,公式如下:

GROWTH_OF(
COUNT_IF(products.product_name = '牛奶', orders.order_id),
orders.order_date
)
https://www.agiquery.com