加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

了解SQL中的ROLLUP

发布时间:2020-12-12 08:49:30 所属栏目:MsSql教程 来源:网络整理
导读:我已经想出CUBE只是产生所有的排列,但我有ROLLUP的麻烦.在线阅读这本书似乎没有任何好的资源,为了解释SQL,像我这样的人一起努力解决SQL. 我的书说,ROLLUP是CUBE操作符的一个特殊情况,排除了结果中不遵循层次结构的所有情况. 我不完全确定这是什么意思,但是在
我已经想出CUBE只是产生所有的排列,但我有ROLLUP的麻烦.在线阅读这本书似乎没有任何好的资源,为了解释SQL,像我这样的人一起努力解决SQL.

我的书说,ROLLUP是CUBE操作符的一个特殊情况,排除了结果中不遵循层次结构的所有情况.

我不完全确定这是什么意思,但是在我所做的表上运行它会产生一些有用的结果.

我从谷歌的另一个页面做了一个表,就像这样:

Type        Store       Number
Dog     Miami       12
Cat     Miami       18
Turtle   Tampa       4
Dog     Tampa       14
Cat     Naples      9
Dog     Naples      5
Turtle   Naples      1

那么这里是我做的查询:

select store,[type],SUM(number) as Number from pets

group by store,[type]

with rollup

这显示了每个商店中每种类型的宠物的数量,以及每个商店中的宠物总数,这是一个很酷的.如果我想看到基于宠物的查询,我发现我必须按顺序切换组,所以类型先到.

那么根据第一组by子句汇总?

另一个问题是,我读了你使用ROLLUP而不是CUBE,当你有一个年和月的列停止它在多个年份聚合同一个月.我想我明白这是什么意思,但是任何人都可以澄清一下吗?你怎么设置这样?

您可以使用ROLLUP来排除列的其他组合吗?我上面的表格很简单,查询会显示“宠物商店”,但是如果有其他列,你可以从结果中包含/排除它们吗?

解决方法

最好通过一个例子解释.假设您由A,B,C分组.然后,您可以通过汇总获得以下分组:
(A,C)
(A,B)
(A)
()

所以你看到这个顺序很重要,就像你已经发现的那样.如果您按A,C,B分组,则可以获得以下分组:

(A,B)
(A,C)
(A)
()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读