实习---pv uv ,SHELL syntax error:unexpected end of file,SQL语句执行顺序

一、曝光pv ,uv 点击pv , uv

1)      PV访问量(Page View),即页面访问量,每打开一次页面PV计数+1,刷新页面也是。

2)      UV访问数(UniqueVisitor)指独立访客访问数,一台电脑终端为一个访客。

3)      点击pv 和uv 是一定要有先曝光,才能有点击,所以,要用hive做个连接,并且,在计算点击一天的点击pv和uv时,曝光表连接点击表时,点击表的时间应向后延长一小时,防止有人在11:59近打开网页而没有点击,以防很得点击的pv、uv值偏小。

 

二、SHELL syntax error:unexpected end of file(window下编辑的脚本在Linux/unix下无法直接运行)

当自己在本地新建一个脚本文件时,上传到Linux下,然后执行时,发现一个错误。

解决思路: DOS下文件和Linux下文件格式差异问题导致的。

 

DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。

【在windows里,换行用的两个符号,回车\r,换行符号\n,在linux下只需一个符号\n就可以了.】

【解决方案:】

使用下面的命令将文件格式设置为unix格式即可解决上述错误。

vi M.txt

:set fileformat=unix

:wq

 

三、sql语句执行顺序,最近都在写 HQL~~,呜。。。

SQL Select语句完整的执行顺序:

(8)  select

(9)  distinct

(11)  top 1

(6)   Table1.id,COUNT(Table1.name)asnameCount

(1)  from Table1

(3)  inner join Table2

(2)  on Table1.id=Table2.id

(4)  where Table1.id<4

(5)  group by Table1.id

(7)  having Table1.id<3

(10)  order by Table1.id desc

1、  from子句组装来自不同数据源的数据;

2、  on 和join

3、where子句基于指定的条件对记录行进行筛选;

4、group by子句将数据划分为多个分组;

5、使用聚集函数进行计算;

6、使用having子句筛选分组;

7、计算所有的表达式;

8、select 集合输出。

9、使用order by对结果集进行排序。

-----------------------------------------------------------------------------------------

红色序号给出了执行的顺序:

1from:对Table1Table2执行笛卡尔积,也就是两个表的行的各种组合,共5*5=25行,生成虚拟表VT1

2on:选择VT1中的那些Table1.id=Table2.id的所有行,生成虚拟表VT2

3inner join:这里是内部连接,直接就是VT2,如果是outer join,如left joinright joinfull join,那么还需要按照外部连接的规则,把VT1中没有匹配的行添加到VT2,生成VT3.

4where:选出VT3Table1.id<4的表格,给虚拟表VT4.

5group by:按照Table1.id进行分组。

6COUNT:执行聚合函数,选出对应Table1.id的行数,生成的结果给虚拟表VT5

7having:选择VT5Table1.id<3的所有结果,给虚拟表VT6

8select:选择VT6中相应的列,给虚拟表VT7

9distinct:将VT7中重复的行去除,生成VT8

10order by:将VT8的结果按照Table1.id进行排序, 这里没有生成一个新的表VT9 ,而是生成游标VC9

11top:从游标VC9的开始处选择指定的行数,这里是1行,生成虚拟表VT10.

经过上面的过程,最终的SQL语句将VT10返回给用户使用。


附:Group by

1. Group by子句(利用group by子句分组数据,当select语句中使用到组函数和字段一起连用时会用到group by,否则会出现错误)

Group by 把select查询的结果集分成几个小组,这个group by子句可以跟在where后面且在having前面。

Group by子句也会触发排序操作,会按分组字段排序。

SQL优化参考:http://blog.csdn.net/bjyfb/article/details/7901978

 

3SQL Select语句完整的执行顺序:
1
)、from子句组装来自不同数据源的数据;
2
)、where子句基于指定的条件对记录行进行筛选; 
3
)、group by子句将数据划分为多个分组; 
4
)、使用聚集函数进行计算;
5
)、使用having子句筛选分组; 
6
)、计算所有的表达式; 
7
)、使用order by对结果集进行排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值