SQL1查找最晚入职员工的所有信息
select * from employees where hire_date=(select max(hire_date) from employees);
首先需要从employees表中查询到最晚入职的属性,然后再查询该属性下员工的全部信息
SQL72考试分数一
请你写一个sql语句查询各个岗位分数的平均数,并且按照分数降序排序,结果保留小数点后面3位(3位之后四舍五入):
select job,round(avg(score),3) avg from grade group by job order by avg desc;
/*
round() 函数用于把数值字段舍入为指定的小数位数。第一个参数是舍入的字段,第二个是位数。
round(avg(score),3) avg。表示avg保留三位小数
group by job表示安装job列分类汇总
order by avg desc。order by从句后跟要排序的列,ASC表示升序排序(默认),DESC表示降序排序
*/
SQL73考试分数二
请你写一个sql语句查询用户分数大于其所在工作(job)分数的平均分的所有grade的属性,并且以id的升序排序,如下:
select g1.id,g1.job,g1.score from grade as g1
where g1.score> (
select avg(g2.score) from grade as g2 where g1.job = g2.job group by g2.job
) order by g1.id asc
/*
*/
大体框架为
select id,job,score from grade where score> () order by id asc
在括号里面完成所在工作(job)分数的平均分的查询:
select avg(score) from grade group by job
两者结合需要使用别名来区分。同时()里面的查询条件需要使用where来对应job。
SQL66牛客每个人最近的登录日期(一)
请你写出一个sql语句查询每个用户最近一天登录的日子,并且按照user_id升序排序,上面的例子查询结果如下:
select max(date) as d from login group by user_id order by user_id asc
输出为d需要使用别名,max函数找出最大date,分组和 排序都是使用user_id。
SQL67牛客每个人最近的登录日期(二)
题目描述
牛客每天有很多人登录,请你统计一下牛客每个用户最近登录是哪一天,用的是什么设备.
有一个登录(login)记录表,简况如下:
第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网
。。。
第4行表示id为3的用户在2020-10-13使用了客户端id为2的设备登录了牛客网
还有一个用户(user)表,简况如下:
还有一个客户端(client)表,简况如下:
请你写出一个sql语句查询每个用户最近一天登录的日子,用户的名字,以及用户用的设备的名字,并且查询结果按照user的name升序排序,上面的例子查询结果如下:
查询结果表明:
fh最近的登录日期在2020-10-13,而且是使用pc登录的
wangchao最近的登录日期也是2020-10-13,而且是使用ios登录的
多表查询,及其重要!
select u.name as u_n,c.name as c_n,max(l.date) as d from login as l
inner join user as u on l.user_id=u.id inner join client as c on l.client_id=c.id
group by l.user_id order by u.name asc
一共有三个表,login,client,user,其中login和其余两个表都有重复属性,所以查询需要使用内连接,语法为inner join on,有关MySQL的join用法可见一张图看懂 SQL语句的各种JOIN 用法(超级实用)