【发布时间】:2010-07-01 09:13:09
【问题描述】:
我发现 CUBE 只是生成所有排列,但我在使用 ROLLUP 时遇到了问题。在网上或我正在阅读的书中似乎没有任何好的资源可以为像我这样苦苦挣扎的人解释 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
这显示了每个商店中每种宠物的数量,以及每个商店中的宠物总数,这有点酷。如果我想查看基于宠物的查询,我发现我必须按顺序切换组,所以类型是第一位的。
那么rollup是基于第一个group by子句的吗?
另一个问题是,我读到您使用 ROLLUP 而不是 CUBE,当您有一个年份和月份列来阻止它在多个年份中聚合同一月份时。我想我明白这意味着什么,但有人可以澄清一下吗?以及如何设置它?
您也可以使用 ROLLUP 来排除其他列组合吗?我上面的表格很简单,查询显示“宠物店”,但如果还有其他列,您可以在结果中包含/排除它们吗?
【问题讨论】:
标签: sql