sql中聚合函数的执行顺序

时间:2015-11-04 12:15:16

标签: sql asp.net

根据我的知识,在sql中执行查询的顺序如下。

1. FROM
2. ON
3. OUTER/Inner
4. WHERE
5. GROUP BY
6. CUBE or ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP

任何人都可以告诉我聚合函数的执行顺序。在我的select子句中我有2个聚合函数。首先执行哪一个?

Select City, Gender, SUM(Salary) as TotalSalary, 
COUNT(ID) as TotalEmployees
from tblEmployee
group by City, Gender

2 个答案:

答案 0 :(得分:1)

执行 all-at-once

  

“一次性操作”意味着所有表达式都相同   逻辑查询过程阶段在逻辑上同时进行评估。

您的SUMCOUNT处于相同的处理阶段。

请记住,一次性意味着你也做不到这样的事情:

SELECT 1 AS col1,
       col1 + 1 AS col2;

您将获得:Invalid column name 'col1'.

答案 1 :(得分:0)

您的列表看起来很像SQL Server对查询的逻辑处理顺序的描述(here)。

这实际上与实际执行顺序无关。它描述了在编译SQL查询时如何解释子句。特别是,它解释了为什么SELECT中的WHERE中定义的列别名不可用。原因很简单:WHERESELECT之前处理,因此别名尚未定义。

这与查询的实际执行无关。