with cube

标签: sql
568人阅读 评论(0) 收藏 举报
分类:
group by *1,*2 with cube(这样会根据*1,*2做一个汇总计算,即group by后的所有列)
同理,with rollup,只对group by 分组后的第一个字段做汇总计算。
cube运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。GROUP BY 应指定维度列和关键字 WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。
先看下表:


我们以id聚合查询出平均分

这一条SQL语句与上面唯一不同之处即为多了后面的 with cube,而结果却是比前面更多了一条结果,它同样是按类ID的平均分,不同是又多了最后一个结果null 4,这个是什么呢,我们来看第一段,with cube 是 包含所有可能的组合,我们根据ID分,它帮我们按ID查出平均总,同时再帮我们计算出所有的平均分,即该表ID为1与2 的平均分。这个我们可以在很多地方应用,如按性别统计工资,按部门统计业绩……
其实实际中,我们往往就得到更准确的数据,即~上面结果应该以小数形式为好~其实上面结果也是不准确的,SQL将其四舍五入了~
我们式式办法~

我们发现有了,有了小数,但再细心一看,结果是不对的,这样SQL相当于就将前一步的操作结果转换成小数,直接在4后面加了二个0,这显示不对,那么SQL为什么会这样,我们又如何解决,其实在表voteDetails中,我们的voteNum字段为int型,那么当我们以avg(voteNum)计算时,SQL就会以voteNum的数据类型计算,也即为int,所以操作结果为int型,会四舍五入,这样虽然我们cast(avg(voteNum) as decimal(20,2)),但也仅仅是将avg计算之后的整形转换为decimail(20,2)保留二位小数。
知道这个原理,我们就好办了!在avg计算之前将数据类型转换。如下尝试:

得到预期结果,小数不是二位没关系,我们可以 在avg计算后的结果再转换一次,保留二们小数!
查看评论

系列文档Cube性能优化

  • 2009年07月21日 09:55
  • 1.11MB
  • 下载

stm32 cube 工程文件

  • 2017年07月20日 14:51
  • 17.71MB
  • 下载

Oracle中group by子句中cube的使用

本文转自http://blog.itpub.net/519536/viewspace-610997/ Oracle的CUBE与ROLLUP功能很相似,也是在数据统计分析领域的一把好手。  ...
  • xya_zone
  • xya_zone
  • 2016-03-24 10:06:16
  • 2319

sql server 使用CUBE实现合计

CUBE运算符生成的结果集是多维数据集,多维数据集是事实数据的扩展,事实数据即记录个别时间的数据,扩展建立在用户准备分析的列上,这些列被称为维,多维数据集是一个结果集,其中包含各纬度所有可能的交叉表格...
  • zghnpdswyp
  • zghnpdswyp
  • 2016-02-16 10:40:38
  • 1982

CUBE8光立方

  • 2013年07月01日 14:28
  • 3.46MB
  • 下载

Oracle分析函数八——CUBE,ROLLUP

原创于2009年08月02日,2009年10月22日迁移至此。 Oracle分析函数——CUBE,ROLLUPCUBE功能描述:注意: ROLLUP功能描述:注意: 如果是ROLLUP(A, B, C...
  • baoqiangwang
  • baoqiangwang
  • 2009-10-22 11:39:00
  • 6042

SQL 中ROLLUP、CUBE的用法和区别

SQL 中ROLLUP 用法 ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集。 下面是 CUBE 和 ROLLUP 之间的具体区别: CUBE 生成的结果集显示了所选列中值的...
  • shenqingkeji
  • shenqingkeji
  • 2016-10-19 16:39:43
  • 2243

几张图简单解析:DW(数据仓库)的cube(多维数据集)

  • zhouhaiqing0905
  • zhouhaiqing0905
  • 2013-12-21 11:47:32
  • 3879

mysql rollup&&cube

当需要对数据库数据进行分类统计的时候,往往会用上group by进行分组。而在group by后面还可以加入with  cube和with rollup等关键字对数据进行汇总。那什么时候用with c...
  • qq_23128587
  • qq_23128587
  • 2016-04-14 20:36:06
  • 605

Unity3d修炼之路:对一个简单对象Cube的移动 旋转和缩放

#pragma strict private var m_nFrameCount : int = 0; private var m_isSubCount : int = 0;//false fu...
  • xiaxiang123
  • xiaxiang123
  • 2014-11-17 21:22:04
  • 2311
    个人资料
    等级:
    访问量: 14万+
    积分: 2203
    排名: 2万+
    最新评论