avg数据库(ACCESS数据库求平均值)
老铁们,大家好,相信还有很多朋友对于avg数据库和ACCESS数据库求平均值的相关问题不太懂,没关系,今天就由我来为大家分享分享avg数据库以及ACCESS数据库求平均值的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
数据库高级查询2
分组查询(group by)
分组查询:
1.查询每个部门的最高工资
select deptno,max(sal) from emp group by deptno;
2.查询每个职位的平均工资
select deptno,avg(sal) from emp group by deptno;
3.查询每个部门的人数
select deptno,count(*) from emp group by deptno;
4.查询工资大于1000的员工,每个部门的最大工资
select deptno,max(sal) from emp where sal>1000 group by deptno;
多字段分组查询:group by字段1,字段2;
1.查询每个部门下每个主管的手下人数
select deptno, mgr, count(*) from emp where mgr is not null group by deptno,mgr;
2.查询emp表中每个部门的编号,人数,工资总和,最后根据人数进行升序排序,如果人数一致,根据工资总和降序排序
select deptno,count(*),sum(sal) from emp group by deptno order by count(*) asc,sum(sal) desc;
3.查询工资在1000-3000之间的员工信息,每个部门的编号,平均工资,最低工资,最高工资,根据平均工资进行升序排序排列
select deptno,avg(sal),min(sal),max(sal) from emp where sal between 1000 and 3000 group by deptno order by avg(sal)
4.查询含有上级领导的员工,每个职业的人数,工资的总和,平均工资,最低工资,最后根据人数进行降序排列,如果人数一致,根据平均工资进行升序排列
select job, count(*),avg(sal),min(sal) from emp where mgr is not null group by job order by count(*) desc,avg(sal) asc;
各种关键字的顺序
select* from表名 where.... group...having... order by... limit...
having(结合group by使用)
having一般要结合分组查询和聚合函数使用,用于给聚合函数的内容添加条件
聚合函数的条件不能写在where后面
普通字段的条件写在where后面,聚合函数的条件写在having后面
1.查询每个部门的平均工资,要求平均工资大于2000(c是别名的用法)
select deptno,avg(sal) c from emp group by deptno having c>2000;
2.查询每个分类的平均单价,要求平均单价低于100
select category_id,avg(price) a from t_item group by category_id having a<100;
3.查询category_id分类为238和917的两个分类的平均单价
select category_id,avg(price) from t_item where category_id in(238,917) group by category_id;
4.查询emp表中每个部门的平均工资高于2000的部门编号,部门人数,平均工资,最后根据平均工资降序排列
select deptno,count(*),avg(sal) a from emp group by deptno having a>2000 order by a desc;
5.查询emp表中工资在1000-3000之间的员工,每个部门编号,工资总和,平均工资,过滤掉平均工资低于2000的部门,按照平均工资进行升序排序
select deptno,sum(sal), avg(sal) a from emp where sal between 1000 and 3000 group by deptno having a>=2000 order by a asc;
6.查询emp表中每年入职的人数
select extract(year from hiredate) year,count(*) from emp group by year;
7.查询每个部门的最高平均工资
select deptno,avg(sal) from emp group by deptno order by avg(sal) limit 0,1;
子查询(嵌套查询)
子查询可以写在where或having后面当做查询条件的值
写在from后面,当做一张新表(但是必须要有别名)
select ename from(select* from emp where sal>1000) newtable;
写在创建表的时候
create table emp_20 as(select* from emp where deptno=20);
1.查询emp表中工资最高的员工信息
select* from emp where sal=(select max(sal) from emp);
2.查询emp表中工资大于平均工资的所有员工的信息
select* from emp where sal>(select avg(sal) from emp);
3.查询工资高于20号部门最大工资的员工信息
select* from emp where sal>(select max(sal) from emp where deptno=20);
4.查询工资高于20号部门最大工资的员工信息
select* from emp where sal>(select avg(sal) from emp);
5.查询和Jones相同工资的其他员工信息
select* from emp where job=(select job from emp where ename='jones' and ename!='jones');
6.查询工资最低的员工的同事们的信息(同事=相同job)
select* from emp where job=(select job from emp where sal=(select min(sal) from emp)) and sal!=(select min(sal) from emp);
7.查询最晚入职的员工信息
select* from emp where hiredate=(select max(hiredate) from emp);
8.查询名字为King的部门编号和部门名称(需要用到dept表)
select deptno,dname from dept where deptno=(select deptno from emp where ename='king');
9.查询有员工的部门信息(编号和名称)
select deptno,dname from dept where deptno in(select distinct deptno from emp);
10.查询平均工资最高的部门信息
select* from dept where deptno in(select deptno from emp group by deptno having avg(sal)=(select avg(sal) from emp group by deptno order by avg(sal) desc limit 0,1));
关联查询
同时查询多张表的数据称为关联查询
1.查询每一个员工的名称和其对应的部门名称
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
2.查询在new york工作的所有员工的信息
select e.* from emp e,dept d where e.deptno=d.deptno and d.loc='new york';
笛卡尔积
如果关联查询不写关联关系则查询到的数据是两张表的乘积,这个乘积称为笛卡尔积,笛卡尔是一种错误查询方式的结果,工作切记不要出现.
等值连接和内连接
等值连接:
select* from A,B where A.x=B.x and A.age=18;
内连接:
select* from A join B on A.x=B.x where A.age=18;(将关联关系写在on后面)
1.查询每个员工的名称和其对应的部门名称
select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;
外连接
使用外连接查询得到的数据层除了两张表的交集数据以外和另外一张主表的全部数据,哪个表为主表通过left/rigth控制, left以join左边表为主表 rigth以join右边表为主表
1.查询所有员工的名称和其对应的部门名称
select e.ename,d.dname from emp e left join dept d on e.deptno=d.deptno;
SQL 数据库,求解答。
1.阅读程序,说明它们的功能
use master
go
create database jxgl on(name=jxgldata1,filename=’c:\jxgl_data.mdf’, Size=5mb,maxsize=100mb,filegrowth=5mb)
go
创建一个名字为 jxgl的数据库,数据文件存储在 c:\jxgl_data.mdf
文件初始的大小为5mb
随着数据量的增加,如果文件空间不足了,会自动增长,每次增长的幅度为5MB
最大增长到 100MB
2.阅读程序,说明它们的功能
use jxgl
go
select* from student
检索 jxgl数据库下面的 student表的所有数据。
3.阅读程序,说明它们的功能
use jxgl
go
select sno,avg(grade) from sc group by sno
检索 jxgl数据库下面的 sc表
按 sno分组,求 grade的平均值
4.阅读程序,说明它们的功能
use library
go
update readcatgory set借书数量=15,借书期限=借书期限+5 where种类名称=‘一类读者’
go
更新 library数据库下面的 readcatgory表
将所有种类名称为一类读者的数据,将借书数量更新为 15,借书期限在原有的基础上,增加5。
5.阅读程序,说明它们的功能
use library
go
select出版社,count(出版社) as图书数量 from books group by出版社 having count(出版社)>10
go
检索 library数据库下的 books表
按出版社分组,查询每个出版社的出版的图书总数量
如果这个出版社出版的图书总数量在10本以下(含10本),那么不显示。
六、设计题。(共20分)
现有关系数据库如下:
数据库名:学籍管理数据库
学生表(学号 char(6),姓名 char(8),性别 char(2),出生日期 datetime)
课程表(课程编号 char(2),课程名称 char(20),任课教师 char(10))
选课表(学号 char(6),课程编号 char(2),成绩 tinyint)
用SQL语言实现下列功能的sql语句代码:
1.创建数据表“选课表”代码。(4分)
选课表(学号 char(6),课程编号 char(2),成绩 tinyint)
要求使用:外键(学号),非空(学号、课程编号)。-------(提示词:foreign key,references)
CRETAE TABLE选课表(
学号 char(6) NOT NULL,
课程编号 char(2) NOT NULL,
成绩 tinyint,
FOREIGN KEY(学号) REFERENCES学生表,
FOREIGN KEY(课程编号) REFERENCES课程表
);
2.从选课表中查询每位学生选课的最高分、最低分、平均分。(4分)
要求:分别使用函数max(),min(),avg()。
SELECT
学号,
MAX(成绩) AS最高分,
MAX(成绩) AS最低分,
MAX(成绩) AS平均分
FROM
选课表
GROUP BY
学号
3.创建视图“学生选课信息视图”代码。(4分)
学生选课信息视图(姓名,课程编号,成绩)
CREATE VIEW学生选课信息视图
AS
SELECT
学生表.姓名,
选课表.课程编号,
选课表.成绩
FROM
学生表 JOIN选课表 ON(学生表.学号=选课表.学号)
4.请用联接查询实现查询选修过“李明”老师讲授课程的所有学生姓名(4分)
SELECT
学生表.姓名
FROM
课程表,选课表,学生表
WHERE
学生表.学号=选课表.学号
AND课程表.课程编号=选课表.课程编号
AND课程表.任课教师='李明'
5.请用嵌套查询实现查询选修过“李明”老师讲授课程的所有学生姓名(4分)
SELECT
学生表.姓名
FROM
学生表
WHERE
学生表.学号 IN
( SELECT
学号
FROM
选课表
WHERE
课程编号 IN
(
SELECT
课程编号
FROM
课程表
WHERE
任课教师='李明'
)
)
ACCESS数据库求平均值
在Access数据库中对数据表求某字段平均值用的是AVG函数,具体操作如下:
1、打开Access,准备一个数据表,对Age列求平均数,如下图所示:
2、点击顶部的查询向导,如下图所示:
3、新建查询界面选择简单查询向导,如下图所示:
4、右键单击查询标题,选择SQL视图,如下图所示:
5、输入SELECT Avg(表1.[Age]) FROM表1语句,如下图所示:
6、执行SQL语句就可得到Age列的平均数了,如下图所示:
avg数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于ACCESS数据库求平均值、avg数据库的信息别忘了在本站进行查找哦。