ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【算法】MySQL算法
[打印本页]
作者:
道家人
时间:
前天 19:21
标题:
【算法】MySQL算法
第二高薪水
本题求Employee表中的第二高的不同薪水,也就是说假如Employee表是:
则第二高的薪水是2000。
题目要求输出的格式是:
对应的sql语句:
该语句的实行次序:
1.从Eomployee表中选取所有行。
2.对salary列举行去重。
3.按照salary列的值举行降序排序。
4.从取第一行下面的一行记录。
由于子查询到的salary可能是空的,因此必要用到
ifnull
函数来处理结果为空的情况
ifnull(参数1,参数2)假如参数1不为空则返回参数1的值,否则返回参数2的值。
这里有一个细节点:就是我们要留意题目让我们输出的格式(列名格式),先看下面的sql语句。
SELECT FIND_IN_SET('d','a,b,c,d') as `index`;
复制代码
find_in_set函数返回的值是4假如倒霉用as对列名重命名则结果是:
因此我们要利用as对列名举行重命名。
部分工资前三高的所有员工
select
d.name 'Department', e1.name 'Employee',e1.salary
from
employee e1 join department d on e1.DepartmentId = d.id
where
3 > (select
count(distinct e2.salary)
from
Employee e2
where
e2.salary > e1.salary
and e2.DepartmentId = e1.DepartmentId
)
;
复制代码
实行的次序是:
1.employee表和department表按照条件举行内毗连。
2.举行子查询,从e1表中第一行开始,e1中的每一条记录都要和e2的所有记录比较,通过聚合函数筛选出e2表中有三条以下比e1大,则该e1满意条件。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4