`
wwy_0918
  • 浏览: 9811 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

group by 和having及聚合函数

SQL 
阅读更多

      在sql中,如果在select语句中使用了聚合函数,那么只会显示一条查询记录,查询指定的其他列可能不具有太大意义,更多的可能是使用了group by,可以分组显示查询记录,分组列值也更有实际意义。

      group by对列进行分组显示,按列值不同分组显示查询记录;当按多列分组的时候,根据多列值的不同分别分组显示查询记录,一般group by和聚合函数一起使用才有意义,意指按不同分组进行统计。

      having子句主要是对已经由where子句查询出来的结果进行过滤,而且由于where子句不能使用聚合函数作为条件,通过having子句使用聚合函数可以进一步进行统计过滤。

       因此,最常用且有效的方式是按group by分组并在select语句中使用聚合函数,进行分组统计。另外一种则是指定查询列,在having子句中使用聚合函数进行统计过滤,常用于子查询中。如下语句,查询出所有课程分数大于80的学生:

SELECT name, subject, score 

FROM sc
WHERE name IN (
    SELECT name 

    FROM sc
    WHERE score > 80
    GROUP BY name
    HAVING COUNT(subject) = (SELECT  COUNT(DISTINCT subject) as num from sc )
)

分享到:
评论

相关推荐

    order by 、group by 、having的用法

    - 当使用 `GROUP BY` 时,`SELECT` 语句中未包含在聚合函数内的列必须出现在 `GROUP BY` 子句中。例如,`SELECT department, COUNT(employee) FROM employees GROUP BY department` 会返回每个部门的员工数量。 - ...

    分组聚合函数详细讲解

    总之,分组聚合函数是SQL中进行数据分析的关键工具,通过`GROUP BY`、`HAVING`以及各种聚合函数,我们可以有效地处理大规模数据,提取出有价值的汇总信息。理解并熟练运用这些概念,对于进行高效的数据查询和分析至...

    第十章模糊查询和聚合函数.zip

    除了上述基本的聚合函数,SQL还提供`GROUP BY`和`HAVING`子句,它们与聚合函数一起使用,对数据进行分组并筛选。例如,你可以根据部门分组员工并计算每个部门的平均薪资: ```sql SELECT department, AVG(salary) ...

    Mysql中order by、group by、having的区别深入分析

    GROUP BY 必须包含在 SELECT 语句的 WHERE 子句之后,且所有未使用聚合函数的列都应包含在 GROUP BY 子句中,以确保数据分组的正确性。 HAVING 子句是 WHERE 子句的扩展,用于在聚合函数的基础上过滤数据。WHERE ...

    SQL问题详解之_having_Group by

    在SQL查询中,GROUP BY和HAVING子句是数据分析和聚合操作的核心部分,它们帮助我们对数据进行分组和过滤,以获得更有意义的结果。在深入理解这两个子句之前,我们首先需要了解聚合函数,如SUM、COUNT、MAX和AVG等。 ...

    order_by_、group_by_、having的用法

    重要的是,`GROUP BY`后的所有列要么是聚合函数,要么是出现在`GROUP BY`子句中,以确保数据正确分组。 3. `HAVING`:`HAVING`子句用于在`GROUP BY`后对已分组的数据进行过滤,类似于`WHERE`子句,但`WHERE`是在...

    Sequelize中用group by进行分组聚合查询

    在SQL中,分组查询是通过`GROUP BY`子句来实现的,它可以将数据按照一个或多个列的值进行分组,通常结合聚合函数一起使用,以便对每个分组执行计算。 1. SQL中的分组查询 在SQL中,使用`GROUP BY`语句进行分组操作...

    group by用法.doc

    理解并熟练运用`GROUP BY`和相关的聚合函数、`HAVING`、`WITH ROLLUP`和`WITH CUBE`,对于进行复杂的SQL数据分析和报表生成至关重要。这些技巧可以帮助你更有效地从数据库中提取信息,满足业务分析的需求。

    简单讲解sql语句中的group by的使用方法

    SQL中的`GROUP BY`语句是数据库查询中的一个重要部分,它用于将数据按照一个或多个列的值进行分组,以便对每个组执行聚合函数,如`SUM`、`COUNT`、`AVG`和`MAX`等。下面我们将详细讨论`GROUP BY`的使用方法及其相关...

    第08章_聚合函数1

    本章主要介绍了几个常用的聚合函数:AVG、SUM、MAX、MIN以及COUNT,以及如何结合GROUP BY和HAVING子句进行数据分组和过滤。 1. **聚合函数介绍** - **AVG()**:用于计算一组数值型数据的平均值。 - **SUM()**:...

    第08章_聚合函数3

    本章主要介绍了几个常见的聚合函数:AVG、SUM、MAX、MIN和COUNT,以及如何结合GROUP BY子句进行数据分组。 1. 聚合函数介绍: 聚合函数是对一组数据进行操作的函数,返回一个基于整个数据集的值。例如,AVG函数用于...

    25.5 MySQL 聚合函数

    MySQL 聚合函数是数据库查询中的重要工具,它们用于对一组值进行操作并返回单个值。在处理大量数据时,聚合...在实际工作中,结合聚合函数和 GROUP BY、HAVING 等关键字,可以创建出复杂的数据查询,满足各种业务需求。

    order_by_、group_by_、having的用法区别.doc

    - 在使用 `GROUP BY` 时,非分组字段必须出现在聚合函数内。 **2. 语法** ```sql SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1; ``` **3. 示例** 继续使用 `Employees` ...

    sql分组查询和聚合函数

    使用 `GROUP BY` 和聚合函数可以实现以下功能: 1. **求每位学生的总分**: ```sql SELECT name, SUM(score) AS totalScore FROM t_score GROUP BY name; ``` 结果: | name | totalScore | |--------|----...

    group by的详解

    4. **聚合函数与非聚合函数**:`GROUP BY`语句中的列和表达式不能包含在聚合函数中,反之亦然。在本例中,`SUM(t.linenetamt)`是对每个组的采购金额求和,而其他列如`extract`函数和`p.name`则不参与聚合。 5. **子...

    Oracle基础之group by和聚合函数

    为什么写了group by运行时会提示“不是单组分组函数;不符合group by语法”?面对这些问题,我都胆战心惊了(怎么可能)。接下来我将把group by的心经要诀传授给你们,是不是很激动鸭,那就拿起你们的小本本记下来吧...

    oracle函数介绍(4) 非著名函数之聚合函数.doc

    聚合函数可被用于select,order by以及having子句中。其运算可以基于group by的结果,也可以直接对所有记录进行运算。当然,这种类型语句相信大家平常也用的比较多,概念性的就不多介绍了,有一点需要注意的是,除了...

    深入浅析SQL中的group by 和 having 用法

    接下来,`HAVING`子句是用来在分组后对组进行过滤的,它与`WHERE`子句类似,但`WHERE`子句在分组之前就应用于原始数据,而`HAVING`则在`GROUP BY`之后应用,即在聚合函数计算完成之后。这意味着`HAVING`可以基于聚合...

    《Pro Oracle SQL》Chapter7--7.10GROUP BY Restrictions

    2. GROUP BY与聚合函数:在使用GROUP BY时,所有未包含在GROUP BY子句中的非聚合列都必须在聚合函数中使用。例如,如果你在SELECT语句中选择了非聚合列,但没有在GROUP BY中列出,那么SQL会抛出错误,因为无法确定...

    第08章_聚合函数.docx

    聚合函数 聚合函数是 SQL 中的一种函数,用于对一组数据进行汇总,输出单个值。聚合函数可以分为五种:...聚合函数和 GROUP BY 子句都是 SQL 中的重要概念,能够帮助我们对数据进行汇总和分组,并进行复杂的数据分析。

Global site tag (gtag.js) - Google Analytics