回答

收藏

了解SQL中的ROLLUP

技术问答 技术问答 360 人阅读 | 0 人回复 | 2023-09-14

我认为CUBE所有的排列的排列,但我正在使用它们ROLLUP遇到麻烦。似乎没有有用的资源来向像我这样的人解释我在网上或我正在读的书。SQL。
0 j# [# O  ^' m( F1 _: U% b我的书说ROLLUP是CUBE运算符的特例排除了结果中不遵循层次结构的所有情况。
6 a6 Z+ ^7 W# w  @7 Y7 \5 {我不确定是什么意思,但是在我做的表上运行会产生一些有用的结果。
0 `5 p* b! O5 U) R3 t: K& w我从Google另一页制作了一个表格,如下所示:$ s8 Y2 x; U+ l6 i3 z" t4 @8 M; z
Type        Store       NumberDog     Miami        12Cat     Miami        18Turtle   Tampa       4Dog     Tampa        14Cat     Naples     9Dog     Naples     5Turtle   Naples     1然后这是我的查询:
; k  T9 N3 w5 z! Kselect store,[type],SUM(number) as Number from petsgroup by store,[type]with rollup这告诉我每家商店的宠物数量和每家商店的宠物总数都很酷。如果我想查看基于宠物的查询,我发现我必须按顺序切换组,所以类型排名第一。- C0 b3 Q0 Y4 ^1 P6 C# ?6 Y' H( {
所以汇总是基于第一个group by子句吗?
! y# W5 C) \+ ^  j6 k+ T1 @另一个问题是,当你有年和月列来停止多年来汇总同一个月的数据时,我读到你使用它ROLLUP而不是CUBE。我想我明白这意味着什么,但有人能澄清吗?以及如何设置它?8 \, O- k9 |8 H* ^3 N8 P) w
你也可以用ROLLUP排除其他列组合吗?我上面的表格很简单。查询显示根据商店分类的宠物,但如果还有其他列,你能在结果中包括/排除它们吗?
! c/ p/ O- ~+ c6 @' Z3 `                                                               
- X  {# V( h) ^! v7 X    解决方案:                                                               
3 b0 b% Y: z# t* p: S  I) J                                                                最好用例子来解释。假设你的A,B,C。然后,您可以通过汇总获得以下分组:" B2 J- ~6 t* J5 }& ^8 @. E
(A,B,C)(A,B)(A)()因此,您已经知道,顺序很重要。如果按A,C,B,而不是:# b) Y* v" z; n3 W1 l5 D: j% a
(A,C,B)(A,C)(A)()
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则