聚合函数
count计数
count(*):不全都是NULL,就加1;count(1):当只要有一列是NULL就不会加1;count(col):当col列不为空就会加1
sum求和
sum(可转成数字的值)返回bigint,比如求和后加1,1必须转化成为bigint类型,sum(col)+cast(1 as bigint)
avg求平均值
avg(可转化成数字的值)返回double
distinct不同值的个数
count(distinct col)
Order by
按照某些字段排序,后面可以有很多列进行排序,默认是字典排序。Order by 是全局排序,Order by这个过程只需要一个且只有一个reduce,无论你配置多少各reduce,到最后都会汇总一个reduce进行Order by,所以当数据量非常大的时候要考虑好是否使用Order by;
select c1,other from tableName where condition order by c1,c2[asc|desc]
如:select * from usertable order id asc,name desc;
Group by
根据某些字段值进行分组,有相同值的放到一起。注意,select后面查询的列,除了聚合函数外都应该出现再group by中,group by后面也可以跟表达式,如substr(col),对某一列字段截取的部分进行分组。having是在group by之后进一步进行筛选的。他使用了reduce操作,受限于reduce个数,设置reduce参数mapred.reduce.tasks。文件的输出个数就是re
count计数
count(*):不全都是NULL,就加1;count(1):当只要有一列是NULL就不会加1;count(col):当col列不为空就会加1
sum求和
sum(可转成数字的值)返回bigint,比如求和后加1,1必须转化成为bigint类型,sum(col)+cast(1 as bigint)
avg求平均值
avg(可转化成数字的值)返回double
distinct不同值的个数
count(distinct col)
Order by
按照某些字段排序,后面可以有很多列进行排序,默认是字典排序。Order by 是全局排序,Order by这个过程只需要一个且只有一个reduce,无论你配置多少各reduce,到最后都会汇总一个reduce进行Order by,所以当数据量非常大的时候要考虑好是否使用Order by;
select c1,other from tableName where condition order by c1,c2[asc|desc]
如:select * from usertable order id asc,name desc;
Group by
根据某些字段值进行分组,有相同值的放到一起。注意,select后面查询的列,除了聚合函数外都应该出现再group by中,group by后面也可以跟表达式,如substr(col),对某一列字段截取的部分进行分组。having是在group by之后进一步进行筛选的。他使用了reduce操作,受限于reduce个数,设置reduce参数mapred.reduce.tasks。文件的输出个数就是re