您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

多级聚合

可使用分组集计算多级聚合。此方法的优势在于,可以在单个 SQL 语句中计算多级分组。

例如:

SELECT publisher, name, year, SUM(price)

FROM :it_publishers, :it_books

WHERE publisher=pub_id AND crcy=:currency

GROUP BY GROUPING SETS ((publisher, name, year), (year))

要检索不同级别的聚合,客户端通常必须重复检查结果,例如,通过对分组属性按 NULL 进行过滤。 在多级聚合的特殊情况下,SQLScript 可以在更精细的分组下利用结果来计算粗略的聚合,并在不同的表变量中返回组的不同粒度。这样可以节省客户端重新检查查询结果的工作量。考虑 SQLScript 中表示的上述多级聚合:

books_ppy = SELECT publisher, name, year, SUM(price) 

FROM :it_publishers, :it_books

WHERE publisher = pub_id AND crcy = :currency

GROUP BY publisher, name, year;

books_py = SELECT year, SUM(price)

FROM :books_ppy

GROUP BY year;