hive wiki文档:
http://www.cnblogs.com/ggjucheng/archive/2013/01/09/2853798.html
and
a.province rlike '^[\\u4e00-\\u9fa5]+$'
Select语句和group by字句
当使用group by字句,select语句,只能包含group by包含的列。当然,在select语句,可以有多个聚合函数(例如count)。看一下例子:
CREATE TABLE t1(a INTEGER, b INTGER);
一个关于上表的group by的查询,可以是这样:
上面的查询可以工作,因为select字句包含a(group by表达式)和一个聚合函数(sum(b)).
但是,下面的查询无法工作:
select语句有多余的列(b),它不包含在group by字句(而且它也不是聚合函数)。这是因为,如果表t1看起来像:
a b ------ 100 1 100 2 100 3
如果group的key是a,那么当group a=100时,b的值在hive中应该显示多少?一种说法,它应该是第一个值或最低值,但我们都同意,有多种可能的选项。hive摒弃了这种猜测无效的SQL(HQL,要准确):有一列在select子句中,却不包含在GROUP BY子句中。
(1)在mysql中select中出现group by中没有出现的列
则GROUP BY 在分组的时候,可能是一个一个来找的,发现有相等的,去掉,保留第一个发现的那一条记录。
但是hive摒弃了这种猜测无效的SQL。
(2)
a.province rlike '^[\\u4e00-\\u9fa5]+$',正则全中文字段
USE default;
select c.province,count(c.cookie)
from
(select b.cookie,b.province
from
(select a.cookie,
a.province
from default.ud_al_allbaidu_session_data a
where a.partition_stat_date=20130114
) b
group by b.cookie,b.province) c
group by c.province
;