group by

作者: HELLOTREE1 | 来源:发表于2018-09-06 11:15 被阅读0次

    查找薪水涨幅超过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 - 简书

    相关文章

      网友评论

          本文标题:group by

          本文链接:https://www.haomeiwen.com/subject/sezzwftx.html