- 博客(14)
- 收藏
- 关注
原创 牛客SQL(21-22)
21 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面)select a.emp_no,(b.salary-c.salary) as growth from employees as ainner join
2020-07-06 21:44:11
144
原创 牛客SQL(19-20)
19 查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工select last_name , first_name , dept_namefrom employees emleft join dept_emp de on em.emp_no = de.emp_noleft join departments des on de.dept_no = des.dept_no;20 查找员工编号emp_no为10001其自入职以来的薪水sala
2020-07-05 16:19:36
156
原创 牛客SQL(15-18)
15 查找employees表所有emp_no为奇数,且last_name不为Mary(注意大小写)的员工信息,并按照hire_date逆序排列(题目不能使用mod函数)解法一select * from employeeswhere emp_no%2=1and last_name != ‘Mary’order by hire_date desc;解法二 (使用位运算)select * from employeeswhere emp_no&1=1and last_name != ‘M
2020-07-02 21:56:49
154
原创 牛客SQL(13-14)
13 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。select title , count(*) t from titlesgroup by title having t >= 2;14 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。注意对于重复的emp_no进行忽略(即emp_no重复的title不计算,title对应的数目t不增加)。解法一select title , count(di
2020-07-01 21:41:49
153
原创 牛客SQL(09-12)
09 获取所有部门当前(dept_manager.to_date=‘9999-01-01’)manager的当前(salaries.to_date=‘9999-01-01’)薪水情况,给出dept_no, emp_no以及salary(请注意,同一个人可能有多条薪水情况记录)解法一:内连接select d.dept_no,d.emp_no,s.salaryfrom dept_manager d inner join salaries son d.emp_no=s.emp_nowhere d.to_
2020-06-28 22:25:29
112
原创 牛客SQL(06-08)
06 查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序(请注意,一个员工可能有多次涨薪的情况)解法一 使用group by分组+having min()过滤select emp_no , salary from salariesgroup by emp_nohaving min(from_date)order by emp_no desc;注:一个员工有多次涨薪,也就是有多个from_date,按员工编号进行分组,然后使用having对分组后的数据进
2020-06-27 16:38:00
114
原创 牛客SQL(03-05)
03 查找各个部门当前(dept_manager.to_date=‘9999-01-01’)领导当前(salaries.to_date=‘9999-01-01’)薪水详情以及其对应部门编号dept_no(注:请以salaries表为主表进行查询,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列) 有TABLE salaries;TABLE dept_manager两个表select s.*,d.dept_nofrom salaries s inner
2020-06-27 14:55:51
95
原创 牛客SQL(01-02)
01 查找最晚入职员工的所有信息。最晚入职日期就是最大的日期,但要考虑到最晚入职日期当天,有可能多人入职。解法一:假设所有入员工都不是同一天入职,则按日期倒叙,取出第一个日期对应的员工信息即可。select * from employeesorder by hire_date desclimit 1;(用时19ms,占内存3432K)解法二:入职员工有可能同一天入职。select * from employeeswhere hire_date = (select max(hire_da
2020-06-27 14:32:32
106
原创 SQL(6)- 用通配符进行过滤
like操作符通配符:用来匹配值的一部分的特殊字符;实际上是SQL的where子句中有特殊含义的字符。为在句子中使用通配符,必须使用like操作符。% 通配符:表示任何字符出现任意次数,可以是0、1、无数次。select prod_name, prod_price from products where prod_name like ‘Ap%’; 以Ap开头的产品。select prod_name, prod_price from products where prod_name like ‘%A
2020-06-01 22:48:06
196
原创 SQL(5)- 高级数据过滤
where + and or in notselect prod_name,prod_price from product where vend_id = ‘dell01’ and prod_price<5000;select prod_name,prod_price from product where vend_id = ‘DEL01’ or vend_id = ‘HUA01’;select prod_name,prod_price from product where (ve
2020-05-31 15:40:52
214
原创 SQL(4)- 过滤数据
where 过滤数据,条件筛选select prod_price from products where prod_price=199;select prod_price from products where prod_price<199 order by prod_price; order by(排序)要在where(筛选)之后。select prod_name from products where prod_name!=apple;elect prod_price from pr
2020-05-31 14:41:07
187
原创 SQL(3)- 排序检索
order by(默认按字母升序排列)select prod_name from products order by prod_name;select prod_id,prod_name,prod_price from products order by prod_price,prod_name;先按prod_price排序,仅当几行prod_price值相同时,才按prod_name排序。如prod_price所有值都是唯一的,那么查询结果不会按prod_name排序。select prod_id
2020-05-31 14:25:41
215
原创 SQL(2)- 检索数据
select语句 - 检索、查询select prod_name from prodcts;(检索出的数据未排序)select prod_id, prod_name, prod_price from products;select * from products;检索所有列,一般不推荐使用。select distinct vend_id from products; distinct检索不同值,去重。distinct关键词作用于其后所有的列。检索返回第一行或某几行:在SQL Server和A
2020-05-31 11:47:56
224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人