`

group by+having

 
阅读更多

 

 

对group by语句产生分组结果进行条件过滤方式:

 

1 group by + having

 

hive> select year, avg(price) from stocks  where exchange='nasddaq' group by year having avg(price)>50;

 

 

2 group by + 嵌套子查询

 

hive> select s2.year. s2.avg from

(select year as year , avg(price) as avg from stocks where  exchange='nasddaq' group by year) s2

where  s2.avg > 50;

 

 

 

3  group by 介绍:

 

a) select后要查询的列中,如果列没有使用聚合函数,则对应的列必须出现在 group by后

b) 基于上一条,select后的列经常要和聚合函数搭配使用

 

eg: select A,count(B) as 数量 from table group by A

错误写法: select A,B from table group by A  原因就是列B没有使用聚合函数下也没有出现在group by后。

 

 

4 having 和 where的区别:

 

where: 用于分组之前对数据进行过滤,这样过滤后的数据在进行分组,条件中不能含有聚合函数,where是map阶段的过滤数据条件

having: 分组之后来过滤数据,条件中经常包含聚合函数,是reduce阶段过滤数据条件

 

通常 group by和having是必然绑定出现的,为分组过滤做筛选的,

而 where是将所有未分组数据进行行过滤

having后的筛选条件一般都是 select后面出现的聚合函数或者列,如下, having的筛选就是前面select中出现的聚合函数。

SELECT A, COUNT(B) FROM stu GROUP BY A HAVING COUNT(B)>2

 

 

 

 

分享到:
评论

相关推荐

    order by 、group by 、having的用法

    在SQL查询中,`ORDER BY`、`GROUP BY` 和 `HAVING` 是三个非常重要的子句,它们分别用于不同的数据处理操作。 1. **ORDER BY** 子句: - `ORDER BY` 用于对查询结果进行排序,按照指定的字段进行升序或降序排列。...

    order_by_、group_by_、having的用法

    在SQL查询中,`order_by_`、`group_by_`和`having`是三个非常重要的关键字,它们分别用于不同的数据处理操作。 1. `ORDER BY`:此关键字用于对查询结果进行排序,默认是升序(ASC),也可以指定降序(DESC)。在`...

    SQL问题详解之_having_Group by

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

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

    ### SQL中的ORDER BY, GROUP BY, HAVING 的用法区别详解 #### 一、概述 在SQL查询语言中,`ORDER BY`, `GROUP BY`, 和 `HAVING` 是三个非常重要的概念,它们分别用于对查询结果进行排序、分组以及在分组后进一步...

    数据库笔试题之查询语句where,group by,having,order by执行与编写顺序详解

    特别是在WHERE、GROUP BY、HAVING、ORDER BY同时出现时,执行顺序和编写顺序变得尤为重要。本文将详细介绍WHERE、GROUP BY、HAVING、ORDER BY的执行顺序和编写顺序,以及它们之间的关系。 一、WHERE子句的执行顺序 ...

    sql中的 where 、group by 和 having 用法解析

    --sql中的 where 、group by 和 having 用法解析 --如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称',COUNT(*)...

    MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究

    在MySQL中,`GROUP BY` 和 `HAVING` 通常一起用于聚合查询,用来筛选满足特定条件的分组。然而,当没有 `GROUP BY` 子句时,直接使用 `HAVING` 可能会导致非预期的行为。这个问题的探讨主要集中在 `HAVING` 后面直接...

    order_by_、group_by_、having的用法区别

    order_by_、group_by_、having的用法区别

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

    在MySQL数据库中,ORDER BY、GROUP BY 和 HAVING 子句是SQL查询中用于数据处理的关键组成部分,它们各自承担不同的任务,以帮助我们从数据库中提取有用的信息。 ORDER BY 子句主要用于对查询结果集进行排序。当你...

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

    在SQL查询中,`GROUP BY`和`HAVING`是两个非常重要的子句,它们用于数据的分组和过滤,特别是在处理聚合数据时。本文将深入解析这两个概念及其使用方法。 首先,`GROUP BY`子句是用于将数据集按照指定的列或表达式...

    mysql group by having 实例代码

    在MySQL数据库中,`GROUP BY` 和 `HAVING` 是两个非常重要的SQL子句,它们在数据分析和报表生成中扮演着关键角色。`GROUP BY` 用于将数据按照指定的一个或多个列进行分组,而 `HAVING` 则用于在分组后对这些分组进行...

    group by的详解

    3. **排序顺序**:当同时使用`GROUP BY`、`HAVING`和`ORDER BY`时,`ORDER BY`通常放在最后。在示例中,`ORDER BY p.name`确保结果按供应商名字排序,而Oracle会默认按照`GROUP BY`中的列顺序进行排序,即先按年份、...

    当数据库复杂查询执行顺序与编写顺序原理及sql案例:同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序

    当同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序时的用法

    mysql中group by与having合用注意事项分享

    而 `HAVING` 语句则是在 `GROUP BY` 后面添加的,用于对分组后的数据进行过滤,它相当于 `WHERE` 语句针对聚合后的结果。 首先,让我们来看看 `GROUP BY` 的基本使用规则。当我们在 `SELECT` 语句中使用了非聚合列...

    group by,having,order by的用法详解

    在SQL查询中,`GROUP BY`、`HAVING` 和 `ORDER BY` 是三个非常重要的子句,它们分别用于数据的分组、筛选和排序。接下来我们将深入探讨这三个概念及其用法。 首先,`GROUP BY` 子句用于将数据按照一个或多个列进行...

Global site tag (gtag.js) - Google Analytics