在数据库技术中,Aggregation function又称之为set function,其含义为输入为一个set,输出为聚合结果。具体包括:
COUNT()
AVE()
MN()
MAX()
SUM()
Aggregation function有两种用法,一种单独使用,另一种是和GROUP联合使用。我们先讨论单独使用的情形。
当单独使用的时候,其输出只有一条结果。在MySQL的源码中,涉及到两个位置标记QUERY是否使用了aggregation function,这两个位置都位于st_select_lex类中(sql_lex.h):
class st_select_lex {
/**
@return true if this query block is implicitly grouped and returns exactly
one row, which happens when it does not have a HAVING clause.
*/
bool is_single_grouped() const
{
return m_agg_func_used &&
group_list.elements == 0 &&
m_having_cond == NULL;
}
bool m_agg_func_used; //
/**
True if contains or aggregates set functions.
@note this is wrong when