zoukankan      html  css  js  c++  java
  • sql算法练习——找出所有员工薪水情况(去重)

    题目:

    找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示
    CREATE TABLE `salaries` (
    `emp_no` int(11) NOT NULL,
    `salary` int(11) NOT NULL,
    `from_date` date NOT NULL,
    `to_date` date NOT NULL,
    PRIMARY KEY (`emp_no`,`from_date`));

    代码:

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

    笔记:

      在大表中 distinct 的效率不高,所以大数据量的时候都被禁止使用,建议使用 group by解决重复问题。

      distinct相当于哈希表,将所有数据加载进来,时间复杂度低,空间复杂度高,

      group by是排序,时间复杂度高,空间复杂度低。

      WHERE语句在GROUP BY语句之前,SQL会在分组之前计算WHERE语句。(WHERE过滤行)
      HAVING语句在GROUP BY语句之后,SQL会在分组之后计算HAVING语句。(HAVING过滤组)

  • 相关阅读:
    DOM面试题【三】
    JS面试题【二】
    移动端面试题【一】
    【python】mysql查询错误告警的处理
    硬币排成线
    书籍复印
    分割回文串
    分割回文串 II
    完全平方数
    俄罗斯套娃信封问题
  • 原文地址:https://www.cnblogs.com/john1015/p/13718589.html
Copyright © 2011-2022 走看看