group by

2018-09-06  本文已影响0人  HELLOTREE1

查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t

首先如何统计薪水涨幅超过15次的员工,就是用的count(emp_no)这个方法直接计算的,注意用count这个统计出现次数的方法。

还有就是group by与order by有什么区别,order by就是排序。而group by就是分组,举个例子好说点,group by 单位名称 

这样的运行结果就是以“单位名称”为分类标志统计各单位的职工人数和工资总额。

这样可以更好的分下类,更好看一些。

还有就是为什么没有用where而是用的having,记住下面的两句话就好了。

WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。   

HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。


找出所有员工当前薪水salary情况对于相同的薪水只显示一次,并按照逆序显示

1. select salary from salaries where to_date='9999-01-01' group by salary order by salary desc;

2. SELECT DISTINCT salary FROM salaries WHERE to_date = '9999-01-01' ORDER BY salary DESC

对于distinct,groupby的性能。

数据量非常巨大时候,比如1000万中有300W重复数据,这时候的distinct的效率略好于group by;

对于相对重复量较小的数据量比如1000万中1万的重复量,用groupby的性能会远优于distnct。

简书上的一篇博客说的不错,大家可以穿送过去看一看SQL优化(二) 快速计算Distinct Count - 简书

上一篇下一篇

猜你喜欢

热点阅读