玖叶教程网

前端编程开发入门

Excel零基础学SQL20:子查询

SQL中常常用到子查询去解决复杂的问题。子查询实则是一条完整的SQL语句。

1、子查询作为数据源

要求:求部门有多少个?

1.1、提取所有部门数据,然后去除重复

select distinct 部门 from [201$]

1.2、在1.1的生成的表格上对部门计数

select count(*)

from

(select distinct 部门 from [201$])

(select distinct 部门 from [201$])这是一个子查询,它是一条完整的sql语句。

在这里充当了过渡的数据源,用于后续的统计。

2、子查询作为条件

要求:求高于【评分】平均分的人员名单

2.1、先求平均分

select avg(评分) from [201$]

2.2、提取高于2.1生成的平均分的姓名

select 姓名 from [201$]

where 评分 >(select avg(评分) from [201$])

(select avg(评分) from [201$])这个子查询放在where充当条件。

又如:

提取F列人员的数据

首先,提取F列的数据

select 姓名 from [201$f1:f]

然后,在提取相应数据

select * from [201$a1:c]

where 姓名 in

(select 姓名 from [201$f1:f])

3、子查询作为字段

要求:生成一条总计的数据,包含人数和总评分。

select distinct '总计' as 部门总计,

(select count(姓名) from [201$a1:c]) as 人数,

(select sum(评分) from [201$a1:c]) as 总评分

from [201$a1:c]

(select count(姓名) from [201$a1:c]) as 人数,

(select sum(评分) from [201$a1:c]) as 总评分

上面两句代码都充当了字段。因为使用了聚合函数,所以,自定义的'总计'需要匹配聚合要求,使用了distinct。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言