首页 > 数据库 >sql server的cube操作符使用详解[转]

sql server的cube操作符使用详解[转]

时间:2023-04-19 11:07:59浏览次数:34  
标签:cube 所有 server 产品 sql 定单 null 产品数量


sql server的cube操作符使用详解
cube操作符
   要使用cube,首先要了解group by
   其实cube和rollup区别不太大,只是在基于group by 子句创建和汇总分组的可能的组合上有一定差别,
   cube将返回的更多的可能组合。如果在 group by 子句中有n个列或者是有n个表达式的话,
   sqlserver在结果集上会返回2的n-1次幂个可能组合。
 注意:
   使用cube操作符时,最多可以有10个分组表达式
   在cube中不能使用all关键字
 例子:
   我们在数据库统计中常常要查询以下情况:
   如一个定单数据库,我们要知道每个定单的每个产品数量,每个定单的所有产品数量,所有定单的某一产品数量,所有定单所有产品总量这些汇总信息。这时使用cube就十分方便了。当然不需要这么多信息或者只想知道某一具体产品、具体某一定单,某一时间关系(前,后,之间)等等具体信息的话,只需在where中限定即可
   先举一个例子,是所有情况的:
   一个数据库表中记载了一个产品定购情况:
   现共有三种产品(1,2,3),已经下了两个定单(1,2)
   sql语句:
   select productid,orderid SUM(quantity) AS total FROM order GROUP BY productid,orderid WITH CUBE
     ORDER BY productid,orderid
   运行后得到结果:
   productid   orderid   total
   null          null     95                      所有定单所有产品总量
   null           1       30                      定单1所有产品数量
   null           2       65                      定单2所有产品数量
   1             null     15                      所有定单产品1总量
   1              1        5                      定单1产品1数量
   1              2       10                      定单2产品1数量
   2             null     35                      所有定单产品2总量
   2              1       10                      定单1产品2数量
   2              2       25                      定单2产品2数量 
   3             null     45                      所有定单产品3总量   
   3              1       15                      定单1产品3数量
   3              2       30                      定单2产品3数量

   如果您对sqlserver  group by  聚集有一定理解的话,您就可以理解cube操作符的用法和作用。其实在现实运用中cube还是很好有的,我们经常要对一些数据库数据进行统计,以利于我们更好的掌握情况
   我想电子商务可以更好的实现合理配置资源,尽量减少库存,只有更好的掌握生产、销售数据的具体情况,才能实现资源的合理配置。希望以后的企业象dell一样,不要象长虹等彩电厂商。

标签:cube,所有,server,产品,sql,定单,null,产品数量
From: https://blog.51cto.com/u_3649463/6205944

相关文章

  • 有关SQL2000的配置的优化
    1.对SQL中实例的内存项的设置     可以通过设置SQL中的一个实例的内存分配,来处理SQL对于内存的使用.例如:如果当前SQL服务器为专用SQL数据服务器,可以将内存设为固定方式(分配足够大的内存空间),可以提高数据服务器的执行效率;    2.对SQL中文件组......
  • 如何查看MS-SQL的安装版本及补丁安装情况
    1.如何查看SQLServer2000的版本号  selectserverproperty('Edition')  selectserverproperty('ProductLevel')  serverproperty函数返回有关服务器实例的属性信息,详细操作可以查看SQLServer2000的联机帮助2.如何查看SQLServer2000是否打补丁,及补丁的版本  有两种方法......
  • SQL查看CHECK约束信息
           以下两个语句均基于系统表sysobjects、syscomments和系统视图sysconstraints,查询结果中包括表ID、表名、列ID、列名、CHECK约束ID、CHECK约束名、CHECK约束status值以及CHECK约束的内容,TCCView为Table-Column-CheckView,结果中均为列级CHECK约束,TCView为Table-Check......
  • 引起SQL数据库超时的问题分析及解决办法
    1.由于数据库设计问题造成SQL数据库新增数据时超时 症状: MicrosoftOLEDBProviderforSQLServer错误'80040e31'([ODBCSQLServerDriver]超时已过期); 服务器上看CPU、内存占用率很低; 事件日志中提示:数据库'*********'中文件'***********'的自动增长在453......
  • MySQL 时间类型 date、datetime 和 timestamp 的用法与区别
    时间范围datetime和timestamp区别时间范围不一样,TIMESTAMP要小很多,且最大范围为2038-01-1903:14:07.999999,到期也不远了。datetime与时区无关、timestamp与时区有关。对于timestamp,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转......
  • mysql增删改查
    1、增insertintotable_name()value();insertintotable_name()values(),(),();insertintotable_namevalue();增加数据,通过关键字insert进行如果是在一行中插入部分字段数据,必须在value之前声明插入字段,而value后的值按声明字段顺序排列。如果插入全部字段,可......
  • mysql高级查询
    1、union联合查询,使用关键字union,其前后为查询字段数相等的select语句。查询结果是先输出前表的行,再输出后表的行。union后可以使用关键字all或者distinct,分别表示不去重和去重。去重指的是将重复的行只保留最开始的一行,判断依据是前后按序对应的查询字段,只区分字面量,而不关心数......
  • mysql事务
    1、介绍MySQL事务主要用于处理操作量大,复杂度高的数据。在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。事务用来管理insert,update,delete语句2、事务条件ACID......
  • mysql之alter命令
    #删除表字段,需要表中字段数大于1ALTERTABLEtestalter_tblDROPi;#添加字段,添加到末尾ALTERTABLEtestalter_tblADDiINT;#添加字段到首位ALTERTABLEtestalter_tblADDiINTFIRST;#添加字段到某字段之后ALTERTABLEtestalter_tblADDiINTAFTERc;#定义......
  • mysql管理
    MySQL管理|菜鸟教程(runoob.com),在下方笔记有大量有用内容。1、启动管理1.1windows1.2linux(这里安装的是mariadb)systemctlstartmariadb#启动systemctlrestartmariadb#重启systemctlstopmariadb#停止systemctlstatusmariadb#查看运行状态systemctlenabl......