SQL分类汇总 您所在的位置:网站首页 oracle的sql分类 SQL分类汇总

SQL分类汇总

2023-03-05 04:29| 来源: 网络整理| 查看: 265

上一节中,我们学习了SQL的简单查询。但在现实生活中,我们除了查询数据外,还会对数据按照一定的标准进行分类,然后在分完类的基础上对各类别相关数据分别进行求和、求平均数、求个数、求最大值、求最小值等方法的汇总。这一节中,我们将简单学习SQL的分类汇总。

一、汇总

常用于汇总的有以下函数,我们称之为聚合函数,它们只针对列,因此又叫做列函数

\begin{array}[b] {|c|c|} \hline 聚合函数&用法 \\ \hline count()& 求某列的行数 \\&count(某列)不包括null,count(*)包括null \\ \hline sum() & 对某列数据求和 \\ \hline avg()& 对某列数据求平均 \\ \hline max()& 对某列数据求最大值 \\ \hline min() & 对某列数据求最小值 \\ \hline \end{array}\\

计算学生不包括重复姓名的人数

二、

1、分组

group by与之对应的关键词“某类”、“每个”。如查询男女生的人数、查询每个学生的平均成绩等;

男女生人数课程选修的人数每门课程最高分和最低分

注意!!!!!!在高版本的navicat中会出现这样的情况

查看每个课程号中的最低成绩以及对应学号

为什么会报错呢?按照运行顺序,sql先从score表中将数据按照课程号分组,接着选出课程号、最低成绩,然而在学号这里出现了错误,因为按照课程号分组的学号列有多条数组,而group by只能显示一个分组的一条数据,sql无法识该选哪条,所以报错。

以下这种情况也是同样的错误:

也就是说,我们在使用分组查询时,select语句中出现的字段要么是group by后的字段,要么是聚合函数或者汇总函数!

2、对分组结果指定条件

having,常跟聚合函数一起使用。

查询重名的人数

注意区分having和where1、where只针对指定行,所以后面不可以跟聚合函数,having可以2、优先级:where>聚合函数>having

查询平均成绩;amp;amp;amp;amp;amp;amp;gt;80的课程这里注意sql运行顺序,select最后运行,其他按输入顺序,所以我们在score找不到平均成绩这一列

三、排序

order by 列名1 desc/asc,列名2 desc/asc; (默认asc)

注意

1、进行多列排序时,左边列优先于右边列,即左边列排序成功,右边列不会再进行排序。

这里不能把winner写在前面,因为这样winner排序成功后就不会对subject进行排序,就无法把化学和物理学科显示在最后面了

2、空值在前,其次是空字符串

四、限制

limit,限制查询结果的指定行数

查出其中两个学生的成绩

五、SQL运行顺序

注意这里运行顺序为:从world表里找出人口超过1000万的数据,从这些数据里找出洲和数目,而sum(name)只有一条数据,固只显示了一行数据,并不是Asia有超85个至少有1000人口的国家正确写法应该再加个group by,才能找到【每个】洲份拥有的至少有1000万国家的数目



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有