2.SQL

作者: 唐騦忆 | 来源:发表于2019-11-12 21:18 被阅读0次

一.第二高薪水

要点:去重,null


第二高薪水
#解法一:循环查询
SELECT
    (SELECT DISTINCT
            Salary
        FROM
            Employee
        ORDER BY Salary DESC
        LIMIT 1 OFFSET 1) AS SecondHighestSalary
#解法二:ifnull判断
SELECT
    IFNULL(
      (SELECT DISTINCT Salary
       FROM Employee
       ORDER BY Salary DESC
        LIMIT 1 OFFSET 1),
    NULL) AS SecondHighestSalary

二、第N高薪水

要点:参数


第N高薪水
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
        set n = n-1;
  RETURN (
      select ifnull(
          (select distinct Salary from Employee
           order by salary desc
           limit n , 1
              
        )
        ,null) as getNthHighestSalary
      
  );
END

三、分数排名

要点:变量,嵌套循环


分数排名
利用@a变量的作为基数,@pre判断分数是否发生改变(改变为1,未变为0),循环得到Rank
select Score,@a := @a+(@pre<>(@pre := Score)) as Rank from Scores,
(select @a := 0,@pre := 0)t
order by Score desc
将大小比较结果作为子查询返回为Rank,注意对子查询的Score去重。
select a.Score,
(select  count(distinct b.score) from Scores as b where (a.score<=b.score)) as Rank
from Scores as a
order by Score desc

四、连续出现的数字

要点:自连接,将本身一张表复制为多张相同的表来使用。


连续数字
select DISTINCT L1.NUM AS ConsecutiveNums from 
logs as L1,
logs as L2,
logs as L3
where
L1.ID = L2.ID-1
AND
L2.ID = L3.ID-1
AND
L1.NUM=L2.NUM
AND
L2.NUM=L3.NUM

五、超过经理收入的员工

要点:自连接,内连接


超过经理收入的员工
select L1.name as Employee 
from 
Employee as L1,
Employee as L2
where
L1.ManagerId=L2.Id
and
L1.Salary>L2.Salary
SELECT a.NAME AS Employee
FROM 
Employee AS a 
JOIN Employee AS b
ON a.ManagerId = b.Id
AND 
a.Salary > b.Salary

相关文章

  • 2.SQL

    一.第二高薪水 要点:去重,null 二、第N高薪水 要点:参数 三、分数排名 要点:变量,嵌套循环 四、连续出现...

  • 2.sql注入

    sql注入的防御方法:1.对输入的sql语句进行过滤或者转义2.使用waf3.数据库预编译(在根源上杜绝)http...

  • SQL基本查询

    1.SQL SELECT: 语法: 2.SQL SELECT DISTINCT: 语法: 3.WHERE 子句: ...

  • 2.SQL语句介绍

    1. 关系型数据库的常见组件 2. SQL语言规范 3. SQL语句分类 4. SQL语句构成 5. 数据库操作 ...

  • 2.SQL常用函数

    1、replace可以处理数据中的脏数据: 2、truncate截取函数 select TRUNCATE(9.98...

  • 复习计划

    1.框架,hibernate,spring,struse 深入学习 2.sql 3.java基础

  • 书签

    1.httpRunner中文使用文档:https://cn.httprunner.org/ 2.sql注入一点小知...

  • 数据分析学习计划

    1.python:Python入门实践、利用Python进行数据分析、Pandas+Numpy 2.SQL:SQL...

  • SQL 高级教程

    1.SQL TOP 子句 ===> 用于规定要返回的记录的数目 语法: MySql 语法 实例: 2.SQL LI...

  • 数据库查询某个字段为空

    MySQL 查询某个字段为空select * from 表名 where 字段名 is null; 2.SQL S...

网友评论

      本文标题:2.SQL

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