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的是每一行的数据
起别名的时候字段不要忘记加别名.字段

posted @   小刘的早餐店  阅读(87)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示
主题色彩