牛客网sql语句学习一

本文介绍了如何使用SQL查询语句获取最晚入职员工信息、各岗位平均分数、用户分数高于平均分的记录,以及用户最近登录日期及设备。涉及到SQL的聚合函数如MAX和AVG,以及子查询和JOIN操作,对于数据库管理和数据分析非常实用。
摘要由CSDN通过智能技术生成

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 用法(超级实用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值