MySQL-select基本查询操作

MySQL-select基本查询操作

一、聚合函数的使用

COUNT()函数
SUM()函数
AVG()函数
MAX()函数
MIN()函数

1、我想知道我们公司有多少员工
select count() as 员工人数 from 员工
select concat(‘共有员工:’,count(
),‘人’) as 员工人数 from 员工
2,我想知道我们公司每个月员工的工资开销是多少?
select sum(目前薪资) as 工资总额 from 员工
3,我想知道我们公司员工的平均薪水如何?
select avg(目前薪资) as 平均薪水 from 员工
4,我想知道我们公司员工的最高工资是多少?
select max(目前薪资) as 最高工资 from 员工
5,我想知道我们公司员工的最低工资是多少?
select min(目前薪资) as 最低工资 from 员工
6,我想知道公司最富有的员工是谁?
select * from 员工 where 目前薪资=(select max(目前薪资) from 员工)
7,我想知道公司最穷的员工是谁?
select * from 员工 where 目前薪资=(select min(目前薪资) from 员工)
8,我想知道公司哪些员工的工资低于公司工资平均水平?
select 姓名,目前薪资 from 员工 where 目前薪资<(select avg(目前薪资) from 员工)
9,查询出比生产制造部最高工资还要高的其他部门员工信息。
select 姓名,目前薪资,部门 from 员工 where 目前薪资>=(生产制造部的最高工资) and 部门!=‘生产制造部’
select 姓名,目前薪资,部门 from 员工 where 目前薪资>=(
select cast(max(目前薪资) as UNSIGNED) from 员工 where 部门=‘生产制造部’) and 部门!=‘生产制造部’

–以下开始分组的练习

Select select_list
From table_name
Where condition_expression
Group by group_columns
having condition_expression
Order by sort_columns

10、统计出我们公司男女员工的人数
select
case 性别
when -1 then ‘女’
when 0 then ‘男’
end as 性别
,count(性别) as 人数 from 员工 group by 性别
性别 人数
男 X
女 XX
练习:
统计easybuy库中easybuy_user表中的用户类型(0:前端用户,1:后端用户,2:系统管理员),显示形如:
用户类型 人数
前端用户 x
后端用户 xx
系统管理员 x

11,统计公司各部门员工的人数
select 部门,count(部门) as 人数 from 员工 group by 部门

12,统计公司各部门员工的人数,最高工资,最低工资,平均工资,工资总额
select 部门,count(部门) as 人数,max(目前薪资) as 部门最高工资,
min(目前薪资) as 部门最低工资,avg(目前薪资) as 平均工资, sum(目前薪资) as 工资总额 from 员工 group by 部门

13,统计公司各部门员工的男女人数

select 姓名,部门,case 性别
when -1 then ‘女’
when 0 then ‘男’
end as 性别,count() as 人数 from 员工 group by 部门,性别
14,查询部门人数超过660人的大部门
select 部门,count(
) as 人数 from 员工 group by 部门 having count() >660
select 部门,count(
) as 人数 from 员工 group by 部门 having 人数>660
15,统计出生产制造部员工的男女人数
select 部门,性别,count() as 人数 from 员工 where 部门=‘生产制造部’ group by 性别
16,统计出生产制造部员工的女员工人数
select 部门,性别,count(
) as 人数 from 员工 where 部门=‘生产制造部’ group by 性别
having 性别=-1
select 部门,case 性别
when -1 then ‘女’
when 0 then ‘男’
end as sex,count() as 人数 from 员工 where 部门=‘生产制造部’ group by 性别
having sex=‘女’
以下写法是错的:
select 部门,case 性别
when -1 then ‘女’
when 0 then ‘男’
end as sex,count(
) as 人数 from 员工 where 部门=‘生产制造部’ group by 性别
having sex=-1
以下写法也是错的:
select 部门,case 性别
when -1 then ‘女’
when 0 then ‘男’
end as sex,count(*) as 人数 from 员工 where 部门=‘生产制造部’ group by 性别
having sex=‘女’ and 婚姻状况=-1

–以下用于演示Order by的用法

17,将生产制造部员工的工资按升序排列
select 姓名,部门,目前薪资 from 员工 order by 目前薪资 asc
select 姓名,部门,目前薪资 from 员工 order by 目前薪资
18,将生产制造部员工的工资按降序排列
select 姓名,部门,目前薪资 from 员工 where 部门=‘生产制造部’ order by 目前薪资 desc
19,将员工按目前薪资升序同时按雇佣日期降序来进行排列
select 姓名,目前薪资,雇佣日期 from 员工 order by 目前薪资 asc,雇佣日期 desc
相对复杂一点的语句:
select 部门,count(部门) as 人数,max(目前薪资) as 部门最高工资,
min(目前薪资) as 部门最低工资,avg(目前薪资) as 平均工资, sum(目前薪资) as 工资总额 from 员工 group by 部门
order by 人数 desc
20,将生产制造部的员按年龄进行降序排列
select 姓名,出生日期,year(now())-year(出生日期) as 年龄 from 员工 where 部门=‘生产制造部’ order by 年龄 desc
select 姓名,出生日期 from 员工 where 部门=‘生产制造部’ order by 出生日期 asc
21,查询出生产制造部年龄最大的员工信息
select 姓名,出生日期,year(now())-year(出生日期) as 年龄 from 员工 where 部门=‘生产制造部’ order by 年龄 desc limit 1
22,查询出生产制造部中工资最高的员工信息(两种写法)
select 姓名,目前薪资,部门 from 员工 where 部门=‘生产制造部’ order by 目前薪资 desc limit 1
select * from 员工 where 部门=‘生产制造部’ and 目前薪资=‘生产制造部部门最高工资’
–生产制造部部门最高工资
select max(目前薪资) from 员工 where 部门=‘生产制造部’
select * from 员工 where 部门=‘生产制造部’ and 目前薪资=(select max(目前薪资) from 员工 where 部门=‘生产制造部’ )

=======以下为多表联结查询的内容

SELECT 字段列表
FROM 表1 INNER|LEFT|RIGHT JOIN 表2
ON 表1.字段 = 表2.字段;
select a.id,a.username,a.mobile,b.name from easybuy_user a inner join easybuy_usertype b
on a.type= b.id
以下写法也可以,旦不建议:
select b.name,a.id,a.username,a.mobile from easybuy_usertype b inner join easybuy_user a
on b.id=a.type
第二种写法
select a.id,a.username,a.mobile,b.name from easybuy_user a,easybuy_usertype b where a.type=b.id
三张表的联合查询
select a.id,a.username,a.mobile,b.name,c.address from easybuy_user a inner join easybuy_usertype b
on a.type= b.id inner join easybuy_user_address c on a.id=c.userid
第二种写法
select a.id,a.username,a.mobile,b.name,c.address from easybuy_user a,easybuy_usertype b,easybuy_user_address c
where a.type=b.id and a.id=c.userid
外连结——左连结
select a.id,a.username,a.mobile,b.address from easybuy_user a left join easybuy_user_address b on a.id=b.userid
外连结——右连结
select a.id,a.username,a.mobile,b.address from easybuy_user_address b right join easybuy_user a on a.id=b.userid
select a.id,a.username,a.mobile,b.address from easybuy_user a right join easybuy_user_address b on a.id=b.userid******

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值