多表关联
with tt as (),tt2 as (),c as()
select tt.d,c.t,count(distinct tt.user_id) as uv from tt
left join tt2 on tt.u = tt2.u and tt.a = tt2.a
left join c on tt2.d = c.d
group by tt.d,c.t order by uv desc limit 1000
建表
CREATE TABLE temp.local_architecture
(
type varchar(255),
cityCode varchar(255),
province varchar(255),
city varchar(255),
district varchar(255),
fromid_hide varchar(255),
fromid_name_hide varchar(255),
fromid_visible varchar(255),
fromid_name_visible varchar(255)
)
ROW FORMAT DELIMITED FIELDS TERMINATED
BY 't' ;
删表数据
DELETE FROM 表名
插入数据
INSERT INTO 表名 (字段) VALUES (值)
linux筛选某列不为空的所有数据
cat 表名 | awk '{if ($1!="NULL") print}' >CC
筛选距离某个日期多少天
示例:筛选3.11往前推90天的所有日期
p_day >= cast(date '2019-03-11' - interval '90' day as varchar)
**把TXT文件导入到hive表中
1、# hadoop fs -put e36168.txt
# hadoop fs -ls -h
2、登录hive并进入到指定数据库
3、创建表
create external table if not exists fun_user_external ( tid INT, userid STRING, pwd STRING, create_time BIGINT, email STRING ... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '`' STORED AS TEXTFILE
4、执行导入语句
load data inpath '文件名' into table fun_user_external;
load data local inpath '文件名' into table fun_user_external;
查询 年月日时分秒格式的时间,怎么能筛选出大于某天的数据
SUBSTR (str, pos, len)
由 <str> 中的第 <pos> 位置开始,选出接下去的 <len> 个字元。
示例:
SELECT SUBSTR (Store_Name, 1, 10)
FROM Geography
WHERE Store_Name = 'San Diego';
其他用法
SUBSTR (str, pos)
由 <str> 中,选出所有从第 <pos> 位置开始的字元
sql时间戳转换为日期
format_datetime(from_unixtime(create_time/1000),'yyyy-MM-dd')
regexp_replace(SUBSTR (create_time, 1, 10), '-', '') as create_time, 调整日期格式
列举目录下文件用hadoop fs -ls /user/
查看文件内容用 hadoop fs -text /user/
查询用户总数 hdfs dfs -cat /user/文件地址 |grep -e '[a-z]' | wc -l