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

来源:互联网 发布:excel数据转换到word中 编辑:程序博客网 时间:2024/04/20 09:01
 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条件的组进行筛选。

原创粉丝点击