对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的用法区别 order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。 group by 从英文里理解就是分组。必须有“聚合函数”来...
group by + having:【注】having只能用于group by。而where是用来过滤表数据的 group by + with rollup:分组+小计 限制记录limit:限制取出记录的数量,要写在SQL语句的最后 标准的SQL书写格式
order_by_、group_by_、having
--sql中的 where 、group by 和 having 用法解析 --如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称',COUNT(*)...
order_by_、group_by_、having的用法区别
该文由浅入深,用浅显的例子给大家以启发,对深入理解having,group by 有很好的帮助!
一、sql中的group by 用法解析: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。 作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理...
如果一个查询中使用了分组函数,任何不在分组函数中的列或表达式必须要在group by中,下面为大家简要介绍下group by,having,order by的用法
order_by_、group_by_、having的用法区别.doc
当同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序时的用法
主要介绍了MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究,同时探究了该情况下MAX与MIN功能的使用情况,需要的朋友可以参考下
本篇文章是对Mysql中order by、group by、having的区别进行了详细的分析介绍,需要的朋友参考下
数据库复杂查询执行顺序与编写顺序原理及sql案例:同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序
GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。 GROUP BY语法 SELECT 列名, ...
sql经典教程,非常全面。包括比较难理解的group by以及having指令的使用。对sql语句的执行顺序也有部分介绍,总之,是不可多得的学习sql的文档。真是居家旅行。。。
mysql中group by语句用于分组查询,可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表, 经常和having一起使用,需要的朋友可以参考下