SQL学习(7)分组查询group by

 1.       group by

这个都不知道的话就不用向下看了

多说一句,select后面的没有使用聚合函数的列必须出现在group by 后面。这个是新人常犯的错误。

2.       group by和all关键字

只有在slect语句中有where子句时,all关键字才有意义

使用all关键字的时候,结果会显示group by子句产生的所有组,包括那些不符合where条件的。

3.       group by 字段 with rollup

显示所选列中值的某一层次组合的汇总。

例如:成绩表s (grade,class,sname,score)

年级汇总

Select grade as 年级,avg(score) as 平均分 from s group by grade wirh rollup

班级汇总,然后年级汇总

Select grade as 年级,class as 班级,avg(score) as 平均分 from s group by grade,class  wirh rollup

4.       group by 字段 with cube

显示所选列中值的所有组合的汇总。

5.       grouping()函数

聚合函数:当行由 CUBE 或 ROLLUP 运算符添加时,该函数将导致附加列的输出值为 1;当行不由 CUBE 或 ROLLUP 运算符添加时,该函数将导致附加列的输出值为 0。仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相关联的选择列表中才允许分组。、

这个函数可以帮助我们把那些空值替换为我们想要显示的文字。例如:

Select case when  (grouping(grade)=1)  then ‘年级平均’ else grade end  as 年级,

   case when  (grouping(class)=1)  then ‘班级平均’ else class end  as 班级,

   avg(score) as 平均分 from s group by grade,class  wirh rollup

6.       创建视图

with cube生成的结果数据会有很多行,为了更好的阅读,我们可以把这个结果放到视图里面。然后就可以根据我们的需要(where条件)从视图里面select。

7.       group by …having…

where是对表中的数据(行)进行筛选,having是对满足where条件的组进行筛选。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值