sql运算顺序及其运算模型

sql运算顺序及其运算模型

 sql的运算顺序
	     from  t1             准备起始数据
		 join  t2             拼接另一份数据,按某个拼接on条件
		 where x>10           对数据过滤:按行过滤
		 group by y           对数据分组
		 having sum(x)>10     对数据过滤:按分组进行过滤
		 select               计算表达式
		 order by             对结果排序
		 limit                限制输出的结果行数
 sql的**运算模型**:
	1. 逐行运算: 特点是,每个表达式利用每一行的数据计算一次,得到一个结果数据;
	              结果的行数,与被查询表的行数一致! 结果列数,与select后的表达式个数一致!
				  表达式在计算时,只能看到当前行的数据;

	2.分组聚合运算:  
	            特点是: 每个表达式利用一组数据计算一次,得到一个结果;
				结果的行数,与数据的分组数一致!结果的列数,与select后的表达式个数一致!  select  max(age),sum(salary)  from t group by city;
				表达式在计算时,可以看见当前整个组的数据;

	3.窗口分析运算:-- sum() over()
			    先将数据分成若干个窗口,并对数据在窗口中排序,并可指定计算时能够看到的数据的范围
					over(partition by xxx order by yyy desc rows between 3 preceding and 4 following )  将来计算时,可以看到当前行的前3行到后4行
					over(partition by xxx order by yyy desc rows between 3 preceding and current row )  将来计算时,可以看到当前行的前3行到当前行
					over(partition by xxx order by yyy desc rows between current row and 2 following )  将来计算时,可以看到当前行的后2行及当前行
					over(partition by xxx order by yyy desc rows between unbounded preceding and unbounded following )  将来计算时,可以看到整个窗口
				然后计算函数,比如sum(salary)
					计算时,会按照前面定义的窗口来计算,而且会对每一行算一次,得到一个结果
				n PRECEDING : 前n行
				n FOLLOWING:后n行
				CURRENT ROW : 当前行
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值