记录几条有用的sql

获取第二高的薪水

select ifnull((select distinct Salary  from Employee order by Salary desc limit 1,1),null ) as SecondHighestSalary;

获取第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 SecondHighestSalary
  );
END;

分数排名

SELECT Score, (SELECT count(DISTINCT score) FROM Scores WHERE score >= s.score) AS Rank FROM Scores s ORDER BY Score DESC ;

获取部门前3高的薪水 (分组排序取每组前3)

select
    b.name as Department,
    a.name as Employee,
    a.Salary
from employee a left join department b on a.departmentid = b.id
where
(select
    count(distinct salary)
from employee
where a.departmentid = departmentid and Salary> a.Salary) < 3
and b.name is not null
order by a.departmentid,a.Salary DESC;

获取部门的最高薪水(分组排序取1)

1、
select a.Department,a.Employee,a.Salary from
(select d.Name as Department, e.name as Employee ,e.Salary,e.DepartmentId
 from employee e left join department d on e.DepartmentId=d.Id order by e.Salary desc)
  as a group by a.DepartmentId;
2、
SELECT d.Name AS Department, e.Name AS Employee, e.Salary FROM
Employee e, Department d WHERE e.DepartmentId=d.Id AND e.Salary=(SELECT MAX(Salary) FROM Employee WHERE DepartmentId=d.Id);
用到的表
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 去过遥远的海边 看过无人的雪山 见过人海的都市 然而 遇到千万人,没有一个可以触动的心 遇到一个人,挑起整个人生波涛汹涌
    只爱穿拖鞋阅读 57评论 0 0
  • 总是想的太多、做的太少,虽有不甘又无力无力、被现实彻底的击垮 结果是什么、是什么、 一有空闲、脑袋乱想 想的多了、...
    JiaYou518阅读 141评论 0 0
  • PS:植树节,脑海里第一个浮现出的就是和爹妈去爬的那些山,然后就是被游客拍千万次的各种挺拔、象征顽强生命的大树。 ...
    Peach桃花阅读 230评论 0 0
  • 来到陌生市场经销商开发,需要细致调查市场。可以以直营的心态,根据公司自身产品特点属性,确定计划开发的渠道、推广方式...
    水晕老宋阅读 301评论 0 0