`
wing123
  • 浏览: 796861 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

COMPUTE 与COMPUTE BY子句

    博客分类:
  • SQL
SQL 
阅读更多
COMPUTE BY子句可以在结果集内生成控制中断和小计,得到更详细的或总的记录。它把数据分成较小的组,然后为每组建立详细记录结果数据集(如SELECT),也可为每组产生总的记录(如GROUP BY)。在COMPUT BY中,定义BY子句不是必要的。如果没有定义BY子句,则认为整个表为一个组,并且只有两个结果数据集产生,一个拥有所有的详细记录,另一个只有一行,即拥有总记录。

语法:

[ COMPUTE
{ { AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM }
( EXPRESSION ) } [ ,...n ]
[BY  EXPRESSION [ ,...n ] ]
]

其中AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM表示可以使用的聚合函数。EXPRESSION表示计算的列名。EXPRESSION必须出现在选择列表中,并且必须被指定为与选择列表中的某个表达式相同。BY EXPRESSION表示在结果集中生成控制中断和小计。

【示例6】在MyCompany数据库中,统计Products表中所有商品的总价值。

完整的设计步骤如下。

(1) 在查询编辑器中输入以下代码:

SELECT ProductName,Amount,price,total
FROM Products
COMPUTE SUM(total)


(2) 执行该语句,查询结果如图12.6所示。


通过上面的查询,可以看到最后一行,表中的所有商品的总价值统计为4032730。

【示例7】在MyCompany数据库中,统计Products表中各国商品的总价值,并查询产品的名称、数量、价格,同时求每一国家的商品总价值,并按照国家分组显示查询的结果。

完整的设计步骤如下。

(1) 在查询编辑器中输入以下代码:
SELECT ProductName,Amount,price,total,Country
FROM Products
ORDER BY Country
COMPUTE SUM(total)BY Country


(2) 执行该语句,查询结果如图12.7所示。



提示    
(1) 当在COMPUTE中使用BY时,要求在所有组合字段中必须包含ORDER BY语句。

(2) 在COMPUTE子句指定的行聚合函数中,不允许使用DISTINCT关键字。

(3) 由于包含COMPUTE 的语句生成表并且这些表的汇总结果不存储在数据库中,因此在SELECT INTO 语句中不能使用 COMPUTE。因而,任何由 COMPUTE 生成的计算结果都不会出现在用 SELECT INTO 语句创建的新表内。 

【示例8】在MyCompany数据库中,按照国家和出货日期统计Products表中的商品的总价值,并查询产品的名称、数量、价格、各自品种商品的总价值、出货日期和国家,按照国家和出货日期分组,显示查询的结果。

完整的设计步骤如下。

(1) 在查询编辑器中输入以下代码:

SELECT ProductName,Amount,price,total,outday,Country
FROM Products
ORDER BY Country,outday
COMPUTE SUM(total)BY Country,outday


(2) 执行该语句,查询结果如图12.8所示。



提示    
COMPUTE BY语句后出现的字段必须是ORDER BY语句后出现的字段的子集,并且COMPUTE BY语句后出现的字段必须和ORDER BY语句后面的字段具有相同的出现顺序,并以相同的表达式开头,中间不能遗漏任何表达式。 

【示例9】完善示例8。

完整的设计步骤如下。

(1) 在查询编辑器中输入以下代码:
SELECT ProductName,Amount,price,total,outday,Country
FROM products
ORDER BY outday,Country
COMPUTE SUM(total)BY Country,outday


(2) 单击【执行】按钮,将出现错误,如图12.9所示。




可以看到,因为COMPUTE BY语句后面出现的字段与ORDER BY后面的字段顺序不一样,因此出现了错误。

(3) 下面的语句是可以的:

SELECT ProductName,Amount,price,total,outday,Country
FROM products
ORDER BY Country,outday
COMPUTE SUM(total)BY Country


(4) 因为COMPUTE BY语句后面出现的字段是ORDER BY后面出现的字段的子集,因此可以执行,查询结果如图12.10所示。



  • 大小: 28.6 KB
  • 大小: 38.2 KB
  • 大小: 97.6 KB
  • 大小: 12.1 KB
  • 大小: 46.6 KB
分享到:
评论

相关推荐

    compute by与compute

    7. `COMPUTE AVG(finalscore), MAX(finalscore) BY classno`:类似地,当`COMPUTE BY`与多个聚合函数结合时,可以按班级编号分组,获取每个班级的平均分和最高分。这对于比较不同班级在同一门课程上的表现非常有用。...

    SQL Server中GROUP BY与COMPUTE BY子句比较探讨.pdf

    以上知识点虽然受到文件内容提供的限制,但还是根据标题、描述、标签和部分内容进行了综合和深入分析,以提供关于SQL Server中GROUP BY与COMPUTE BY子句的比较探讨,并扩展到相关的数据处理和数据库应用知识。

    探讨SQL compute by的使用分析

    为了解决这个问题,我们可以使用`COMPUTE BY`子句,它允许我们在结果集中同时保留原始数据和汇总信息。 `COMPUTE BY`子句的工作原理是,它在结果集的末尾添加额外的行来展示计算出的汇总值。例如,以下SQL语句展示...

    C#利用COMPUTE子句汇总数据

    在C#中,我们通常会通过ADO.NET框架与数据库进行交互,使用`SqlCommand`对象执行包含`COMPUTE`子句的SQL语句。 以下是一个简单的示例,展示如何在C#中利用`COMPUTE`子句对工资表(例如名为`EmployeeSalaries`)中的...

    数据库技术:数据汇总.ppt

    COMPUTE子句会为指定的列计算聚合值,并将其添加到结果集中作为额外的行。COMPUTE BY子句则允许在每个分组的基础上计算这些聚合值。 例如,统计销售总数量的同时显示详细数据记录,可以使用COMPUTE子句;而分别...

    sql中的高级查询语句

    Compute子句需要指定的信息包括可选的BY关键字、行聚合函数名称和要对其执行行聚合函数的列。Compute生成的结果集可以显示为分离的结果集。 使用UNION子句可以将两个或多个SELECT语句的结果组合成一个结果集。使用...

    SQL Server2005 查询技术

    8. COMPUTE子句:在结果集中添加计算行,如总和、平均值等。`COMPUTE SUM(column)`会在结果末尾添加一行为column的总和。 9. COMPUTE BY子句:类似COMPUTE,但针对每组数据计算聚合。 了解这些子句后,我们来看两...

    C# DataTable中Compute方法用法集锦(数值/字符串/运算符/表等操作)

    `Filter` 参数则用于指定筛选条件,类似于SQL的`WHERE`子句,用于限制参与计算的数据行。 例如: ```csharp DataTable dt = new DataTable(); object obj = dt.Compute("iif(1000=5,1000,iif(100>100,4001,2000))",...

    计算机应用技术(“视图”文档)共19张.pptx

    定义视图的查询不能包含COMPUTE子句、COMPUTE BY子句或INTO关键字。定义视图的查询不能包含ORDER BY子句,除非在SELECT语句的选择列表中还有一个TOP子句。不能为视图定义全文索引。不能创建临时视图,也不能对临时表...

    SQL实例集锦(很实用)

    使用多个COMPUTE子句 可以使用多个`COMPUTE`子句来同时计算不同的汇总值。例如,`SELECT column1, SUM(column2), AVG(column2) FROM table_name COMPUTE SUM(column2), AVG(column2);`将分别计算`column2`的总和和...

    浅谈SQ1 Server数据库查询语言的教学.pdf

    Into子句可用于创建新表并将查询结果插入其中,但仅限于在Select语句中使用,不能与compute子句混合使用。同时,执行带into子句的Select语句时,用户需要在目标数据库内具有创建表的权限。 在查询日期时间类型数据...

    数据库基础练习题解答.pdf

    * 本题考察了COMPUTE子句的使用,COMPUTE子句用于计算聚合函数,如SUM、AVG、COUNT等。 知识点4:子查询 select count(classname) as '班级总数' from class where classname like'01%' * 本题考察了子查询的使用...

    [详细完整版]7数据库.doc

    2. **GROUP BY子句与HAVING子句**:`GROUP BY`用于将数据分组,而`HAVING`则用于在分组后设置筛选条件。例如,`select kind, avg(willnum) from course group by kind having avg(willnum) > 25`将返回平均报名人数...

    SQL Server2008yingyong

    8. COMPUTE和COMPUTE BY子句:在查询结果集中添加汇总行,例如计算平均值或总和。 ### 6.1 基本 SELECT 语句 - **投影查询**(Projection Query):最基本的SELECT语句不包含WHERE子句,用于获取指定列的数据。...

    《数据库原理与SQLServer》实验内容.doc

    * 了解 COMPUTE 子句和 COMPUTE BY 子句的使用 本实验内容涵盖了数据库原理和SQL Server的基础知识,包括数据库管理、数据库创建与操作、数据表创建与操作、数据库查询与视图等方面,为学习数据库原理和SQL Server...

    总结下sqlserver group by 的用法

    在SQL Server中,`GROUP BY`语句是一个用于聚合数据的关键子句,它允许我们将数据分组,并对每个组执行聚合函数(如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等)。在数据库查询中,当你需要根据某个或多个列的值对数据...

    西南交通大学第四章-数据库作业.docx

    - **COMPUTE和COMPUTE BY子句**: 计算汇总值(如总和、平均值等)并按指定列分组。 - **限制**: - 使用`ORDER BY`进行排序。 - 使用`COMPUTE`进行汇总计算。 - 使用`COMPUTE BY`指定分组。 - 注意,`SELECT ... ...

    第05章销售管理数据库的数据查询.ppt

    8. COMPUTE子句:对结果集进行分组计算,提供更复杂的汇总功能。 在实际操作中,可以通过SQL Server Management Studio的查询编辑器来编写和执行SQL语句。例如,要查询所有员工的信息,只需输入`SELECT * FROM ...

Global site tag (gtag.js) - Google Analytics