sqlserver group by with cube

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

CUBE运算符是在Select语句的group by子句中指定的,group by应指定维度列和关键字with cube,结果集将包括维度列中各值的所有可能组合.

示例1.

Sql语句如下:select * from student

select sex,sclass,sum(score) as 合计from studentgroup by sex,sclass with cube

select sex,sclass,sum(score) as 合计from studentgroup by sclass,sex with cube

Sql查询时这样运行:

  1. 查询到性别的第一个性别为男,则先查询男生,然后分班级

  2. 查询完成之后,对性别为Sex为男的数据进行合计

  3. 查询性别为女的数据,查询完成之后同样也进行合计

  4. 不分性别、班级进行合计汇总

  5. 以上均是以性别为组来分类,因为至此时关于性别的所有汇总都已经完成

  6. 按照sclass进行分组汇总.

注意:

  1. 分类依据并不是根据select 中的顺序,而是根据group by中的顺序.

  2. 尽量按照使select和group by中的字段顺序一致,这样在显示起来看着更舒服,具体情况具体分析.

对于上述查询的结果,我们可以看出,数据中存在空置问题,绑定到GridView后显示如下:

此中效果并没有达到能够满足实际项目中的需要,所以,我们对Sql语句应进行改进.

使用Grouping区分空值.

如何区分使用CUBE之后产生的空值和实际查询中得到的空值.这个问题可以用grouping函数来解决.如果列中的值来来自查询数据,则grouping返回0,如果列中的值是cube产生的空值,则返回1

示例2.

Sql如下:select case when(grouping(sex)=1) then '小记' else sexend as 性别,case when(grouping(sclass)=1) then '小记' else sclassend as 班级,sum(score)from studentgroup by sex,sclass with cube

CUBE可以生成n维的多维数据集,即具有任意维目的多维数据集,只有一个维度的多维数据集可用于生成合计.

示例3:

SQL:select case when(grouping(sex)=1) then '合计' else sex end as 性别,sum(score) as 合计from studentgroup by sex with cube

group by with cube相关推荐

  1. sqlite查询乘以某列如果是null就换成_大数据之Hive group by with cube/rollup分组查询...

    group by sql 查询时,我们常将聚合函数和group by 结合起来对某一个或多个字段进行分组查询,例如: select addcode,count(distinct sbtid)uv fr ...

  2. group by rollup | cube 学习

    1.如果是ROLLUP(A, B, C)的话,首先会对(A.B.C)进行GROUP BY,然后对(A.B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作. ...

  3. GROUP BY你都不会!ROLLUP,CUBE,GROUPPING详解

    Group By Group By 谁不会啊?这不是最简单的吗?越是简单的东西,我们越会忽略掉他,因为我们不愿意再去深入了解它. 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 1 ...

  4. SQL语句where,Group By,having order by 的详细使用方法

    为什么80%的码农都做不了架构师?>>>    1. Group By 语句简介: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Grou ...

  5. [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)

    原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用 ...

  6. Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP

    GROUPING SETS 该关键字可以实现同一数据集的多重group by操作.事实上GROUPING SETS是多个GROUP BY进行UNION ALL操作的简单表达,它仅仅使用一个stage完 ...

  7. SQL汇总统计与CUBE概念

    SQL汇总统计(Group by, ROLLUP, CUBE)与CUBE概念 第一层:[GROUP BY]将一个"数据集"划分成若干个"小区域",然后针对若干个 ...

  8. SQL SERVER中ROLLUP的用法

    cube操作符 要使用cube,首先要了解group by 其实cube和rollup区别不太大,只是在基于group by 子句创建和汇总分组的可能的组合上有一定差别, cube将返回的更多的可能组 ...

  9. 多维分析中的 UV 与 PV

    1. 概念 1.1 UV 与 PV 对于互联网产品来说,UV 与 PV 是两个非常常见的指标,并且通常都是分析的最基础指标.UV 一般来讲,是指使用产品(或产品某个功能)的独立用户数.PV 则来源于网 ...

最新文章

  1. 【Qt】Qt Creator中文输入设置
  2. Nature调查 l 中国博士生们的科研围城
  3. Oauth2认证以及新浪微博开放平台应用
  4. Spring注入日期到bean属性-CustomDateEditor
  5. 斩获2019 Thales AIChallenge4Health第一,腾讯优图医疗AI再获突破
  6. bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛——状压DP
  7. 主流的数据可视化工具介绍
  8. Python 读取MODIS叶绿素-a浓度.nc文件
  9. 不同机构的自动驾驶专利分析报告解读
  10. Unity:骨骼动画
  11. html directive 内容传递,directive的传值问题(全面解析directive的传值问题)微信分享实例...
  12. 【Python】import class/import module
  13. 3D游戏角色动画——Elaina(全流程人物建模)
  14. 复习Web前端开发(一)
  15. python制作查询网页_Python制作简单的网页爬虫
  16. vimPlus插件安装失败解决
  17. C语言:int型数据向char型数据的强制类型转换原理
  18. 《On Java 8》- 面向对象之代码复用(组合、继承、委托)
  19. Bootstrap系列之警告框(Alert)
  20. 5G网络切片技术增强研究

热门文章

  1. Widows下TortoiseGit登录密码错误
  2. eclipse-阶段四-Server Tomcat v8.5 Server at localhost failed to start.
  3. 《中国人工智能学会通讯》——11.10 点云局部特征描述子基准评估体系
  4. Redis 网络编程
  5. LeetCode #1349. 参加考试的最大学生数 - 学到了:压缩状态动态规划、位运算、reduce()、str().count()
  6. php validator classes
  7. android限制第三方应用安装软件,如何从Android中的未知来源安装应用程序 | MOS86...
  8. php7 opcode,php7最小化安装 vld扩展安装并查看php代码的opcode ast测试
  9. qt调试失败问题跟踪
  10. 查询服务器系统类型有哪些,查看服务器的操作系统类型