SQL Server如何处理以下查询?

SQL Server如何处理以下查询?,sql,sql-server,Sql,Sql Server,我对数据库进行了一些查询,该数据库名为:Northwind,可用于make验证,如果您从官方网站下载,我执行了以下查询: SELECT C.CategoryName NAME, P.CATEGORYID CODE, COUNT(*) 'PIECES', SUM(UnitPrice*UnitsInStock) 'AMOUNT' FROM Northwind.dbo.Categories C, Northwind.dbo.[products] P WHERE

我对数据库进行了一些查询,该数据库名为:Northwind,可用于make验证,如果您从官方网站下载,我执行了以下查询:

SELECT C.CategoryName NAME,
    P.CATEGORYID CODE, 
    COUNT(*) 'PIECES',
    SUM(UnitPrice*UnitsInStock) 'AMOUNT'
FROM 
    Northwind.dbo.Categories C, Northwind.dbo.[products] P
WHERE
    P.CategoryID = C.CategoryID
AND 
    P.CategoryID>2
GROUP BY
    P.CategoryID, C.CategoryName
HAVING SUM(UnitPrice*UnitsInStock)>10000
ORDER BY 'AMOUNT' DESC;
查询为我提供了正确的结果:

NAME            CODE        PIECES      AMOUNT
--------------- ----------- ----------- ---------------------
Seafood         8           12          13010.35
Dairy Products  4           10          11271.20
Confections     3           13          10392.20
事实上,我不知道SQL Server是如何计算该查询的,因为涉及到许多操作,在某些情况下,SQL Server必须生成一个临时数据库来执行
have

HAVING SUM(UnitPrice*UnitsInStock)>10000
我想得到一个关于SQL Server执行查询的顺序的解释,我的意思是SQL Server执行的第一个和最后一个操作是什么,除了我不知道它如何知道必须将名为SUM的操作应用于名为:products的表

SUM(UnitPrice*UnitsInStock) 'AMOUNT'

我并没有说明如何计算好这个运算,而且对我来说,
COUNT
非常模糊,但给出了正确的结果,我非常感谢您对它如何计算这个查询的详细解释,谢谢您的支持。

您将不得不看一下伊兹克·本·甘的查询的逻辑顺序处理,他详细地解释了每一步

以下是可能按逻辑顺序执行的子句,每个子句的输出将在下一阶段呈现给该子句

5 SELECT 5.2 DISTINCT 7 TOP <TOP_spec>
                                  5.1 <select_list>
                              1 FROM <table_operators: JOIN, APPLY, PIVOT, UNPIVOT>
                              2 WHERE <predicate>
                              3 GROUP BY <definition_of_grouping_sets>
                              4 HAVING <predicate>
                              6 ORDER BY <order_by_list>
                              7 OFFSET <offset_spec> FETCH <fetch_spec>
5选择5.2不同的7顶部
5.1
1来自
2在哪里
3分组
4拥有
6订购人
7偏移量取数

谢谢@TheGrameiswar,这真的很有帮助,@TheGameriswar,一个简单的问题,我正在阅读这一章,这里说我键入的查询子句的顺序与逻辑解释的顺序非常不同,你在这里放的数字代表逻辑顺序,对吗?谢谢你的支持,我会读这一章来了解更多,Np,很高兴你能找到答案。也请看这里问一个好问题:非常感谢,我会改进我未来的问题,