sql语句的小知识点积累

最近在复习sql语句,把一般会遇到的小知识点记一下

1.order by 排序 要放在select语句的最后

比如要求找到to_date=‘9999-01-01’ 并且salary 倒序的员工薪水信息,并且去重,去重用distinct 这个关键字
select…from…where…order by…

select distinct salary from salaries  where to_date='9999-01-01' order by salary desc

这个语句如果order by放在where的前面就是错的

2.求个数 用count(),一般是跟group by 分组一起使用

比如求订单表里user_id 大于2的订单个数
这是订单表在这里插入图片描述

select user_id,count(*) from order_table group by user_id having count(*)>2
3.group by 后面的条件判断用having

user表user在这里插入图片描述
订单表order_table在这里插入图片描述
要求订单表里金额总和大于100的用户信息
这里要用到group by分组,sum求和

select a.username,b.user_id,sum(money) as sm from user as a RIGHT JOIN
order_table as b on a.id=b.user_id group by b.user_id,a.username
having sm>100

4.左连接left join和右连接right join

两张表a和b,如果是要a表的信息全部展示,就a left join b
如果要b表的信息全部展示,就用a right join b或者b left join a

题目:查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序(请注意,一个员工可能有多次涨薪的情况)
CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date
date NOT NULL, first_name varchar(14) NOT NULL, last_name
varchar(16) NOT NULL, gender char(1) NOT NULL, hire_date date NOT
NULL, PRIMARY KEY (emp_no));
CREATE TABLE salaries ( emp_noint(11) NOT NULL, salary int(11) NOT NULL, from_date date NOT NULL, to_date date NOT NULL, PRIMARY KEY (emp_no,from_date));

这时是有员工没有涨薪的情况,但是涨薪表里的员工肯定是在员工表里的,所以员工表employees要在左边

select b.emp_no,b.salary from employees as a left join salaries as b  on a.emp_no=b.emp_no and a.hire_date=b.from_date order by b.emp_no desc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值