zoukankan      html  css  js  c++  java
  • LeetCode SQL(一)

    本篇博客会不定时更新

    组合两个表

    SELECT a.FirstName,a.LastName,b.City,b.State from Person a left join Address b USING(PersonID);
    SElECT a.FirstName,a.LastName,b.City,b.State from Person a left join Address b on a.PersonID=b.PersonID;
    

    可以使用USING()这个语法

    第二高的薪水

    SELECT IFNULL((SELECT DISTINCT Salary FROM Employee order by Salary desc limit 1 offset 1),null) AS SecondHighestSalary
    

    第一个SELECT后面是没有加括号的,写的时候可以先不用写最外层的SELECT,下班里面的写好,里面的SELECT得到的是一个值,IFNULL函数再对这个值进行判断得出来一个值,但是这个值不能输出到页面上,需要最外面的SELECT选中
    DISTINCT是放到SELECT之后的,而且只能放到字段的最前面,是没有括号的

    第N高的薪水

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
        SET N:= N-1;
        RETURN(
            SELECT Salary from Employee group by Salary order by Salary DESC limit N,1
        );
    END
    

    注意函数的使用,函数和Go的函数类似是参数和返回值类型是写到后面的,GROUP BY放到ORDER BY之前
    分数排名

    select a.Score as Score,
    (select count(distinct b.Score) from Scores b where b.Score >= a.Score) as 'rank'
    from Scores a
    order by a.Score DESC
    

    里面的SELECT得到的是RANK,这个RANK是通过外部的字段比较得到的,理解上可以从每一个行来理解,SELECT的是每一行的数据
    起别名的时候字段不要忘记加别名.字段

  • 相关阅读:
    456. 132 Pattern
    496. Next Greater Element I
    503. Next Greater Element II
    341. Flatten Nested List Iterator
    232. Implement Queue using Stacks
    225. Implement Stack using Queues
    208. Implement Trie (Prefix Tree)
    思考--为何早晨型人更容易成功
    Listary的使用
    【运维】虚拟机如何安装CentOS
  • 原文地址:https://www.cnblogs.com/lis2/p/leetcode_sql.html
Copyright © 2011-2022 走看看