两张表之间进行数据库查询时的聚合函数用法

注意:表中内容中文显示时有乱码现象,我都用Hello World代替!

comment(评论表)】:

                

Bookid userid comment star
ts00001 1 Hello World 4
ts00001 2 Hello World 6
ts00001 5 Hello My Java 9
ts00002 1 123 4
ts00002 2 123 4
ts00003 2 Hello World 4
ts00004 2 Hello World 4
ts00005 1 Hello World 4
ts00006 2 Hello World 4
ts00007 1 Hello World 4
ts00008 2 Hello World 4
ts00009 1 Hello World 4
ts00010 2 Hello World 4
ts00011 2 safdsa 4
ts00012 1 sdfasd 4

Books(图书表)】:

bookid name author introduce publisher publicationtime inventory images istop categorycode isbn
ts00001 C# Joe Mayo Hello World Hello World 1900-01-01 00:00:00.000 5 ../img/books/ts00001.jpg True TP312 510 12312312312
ts00002 SQL Server []Solid Quality Learning Hello World Hello World 2007-02-01 00:00:00.000 5 ../img/books/ts00002.jpg True TP312 840 9787302163305
ts00003 ASP.NET2.0 []Chris Hart John Kauffman Hello Funs Hello World 1900-01-01 00:00:00.000 1 ../img/books/ts00003.jpg True TP312 830 978730223305
ts00004 C Hello World Hello World Hello World 2010-06-01 00:00:00.000 7 ../img/books/ts00004.jpg True TP312 630 9787302224464
ts00005 C++ Primer Hello WorldStanley Hello World Hello World 2006-03-01 00:00:00.000 5 ../img/books/ts00005.jpg True TP312 820 9787115145543
ts00006 Java []Bruce Eckel Hello World Hello World 2008-12-01 00:00:00.000 6 ../img/books/ts00006.jpg True TP312 510 9787111256113
ts00007 Hello World Hello World Hello World Hello World 2007-12-01 00:00:00.000 5 ../img/books/ts00007.jpg True TP312 130 9787302162063
ts00008 Hello World Hello World Hello World Hello World 2010-01-01 00:00:00.000 5 ../img/books/ts00008.jpg True TP312 220 9787115216878
ts00009 Hello World Hello World Hello World Hello World 2004-02-01 00:00:00.000 4 ../img/books/ts00009.jpg True TP312 110 9787111135104
ts00010 Hello World Hello World Hello World Hello World 2011-01-01 00:00:00.000 4 ../img/books/ts00010.jpg True TP312 150 9787111321330
ts00011 Hello World Hello World Hello World Hello World 2009-08-01 00:00:00.000 3 ../img/books/ts00001.jpg True TP312 500 9787810821698
ts00012 PowerPoint Hello World PowerPoint 2007Hello World Hello World 2009-03-01 00:00:00.000 5 ../img/books/ts00011.jpg True TP312 430 9787122046901

问题是】现在我要查询两张表中comment中(bookid,name,author,introduce images)和books中(star)并且star要返回平均值,最后结果按bookid,name,author,introduce,images分组!

查询语法】:

select top 12 c.bookid,left(b.name,10) as name,left(b.author,10) as author,left(b.introduce,40) as introduce,b.images,avg(c.star) as star from Books b inner join comment c on b.bookid=c.bookid group by c.bookid,name,author,introduce,images having avg(c.star)>=4

结果为】:

bookid name author introduce images star
ts00001 C# Joe Mayo Hello World ../img/books/ts00001.jpg 6
ts00002 SQL Server [美]Solid Q 《SQLServer2005实现与维护(附光盘MCTS教程)》是微软认证技术专家 ../img/books/ts00002.jpg 4
ts00003 ASP.NET2.0 [美]Chris H Hello Funs ../img/books/ts00003.jpg 4
ts00004 C程序设计(第四版) 谭浩强 著 由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习C语言程序设计 ../img/books/ts00004.jpg 4
ts00005 C++ Primer :(美)Stanle 作为目前业界广泛使用的编程语言,C++可谓包罗万象、博大精深。20年来,讲述C+ ../img/books/ts00005.jpg 4
ts00006 Java编程思想 [美]Bruce E 本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文 ../img/books/ts00006.jpg 4
ts00007 大话设计模式 程杰 本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解GoF(设计模式的 ../img/books/ts00007.jpg 4
ts00008 代码整洁之道 (美)马丁 作者Martin是软件工程领域的大师级人物,是《敏捷软件开发:原则、模式与实践》 ../img/books/ts00008.jpg 4
ts00009 计算机程序的构造和解 :[美]艾伯森 这一版本中强调了几个新问题,其中最重要的是有关的不同的途径中,计算模型里对于时间 ../img/books/ts00009.jpg 4
ts00010 深入理解计算机系统( (美)布莱恩特,奥哈 本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响 ../img/books/ts00010.jpg 4
ts00011 单片机原理与实用技术 付晓光 本书以人们对新知识的认识过程为顺序,从分析单片机的应用实例出发,以MCS-51系 ../img/books/ts00001.jpg 4
ts00012 PowerPoint 墨思客工作室 PowerPoint 2007是Microsoft公司推出的Office 200 ../img/books/ts00011.jpg 4

 

 【总结:】

1、select 子句只能包含集合函数和出现在Group by子句中的分组列

2、集合函数只能应用于select子句和Having子句

3、使用Having子句之前必须使用Group by子句对数据行分组

4、Having子句中的条件表达式必须使用集合函数来构造

 【关键点】:

千万不要在group by 子句中加star,因为加了以后,查询就不会返回平均值,而是返回分组,千万注意!

 

时间: 2024-09-23 02:02:51

两张表之间进行数据库查询时的聚合函数用法的相关文章

数据库中两张表之间的数据同步增加、删除与更新实现思路_MsSql

分别创建增加.删除.更新的触发器(Trigger)来达到两张表之间数据同步的目的. 1:数据同步增加: 如有两张表--A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. 复制代码 代码如下: CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3) SELECT A表字段1,A表字段2,A表字段3 FROM INSERTED END

学生上机信息统计——对两张表的联合查询

     在学生上机信息统计中,   此处,因为要查询两张表,而且两张表查询的先后有时要严格表明,所以,在查询时,有两种思路:      1,定义两个Recordset对象,并根据字段,判断是先查询学生信息表,还是先查询学生上机表      2,两张表有一个共同的字段:卡号,所以,可以根据卡号将两张表连起来查询,这样比较方便.    因为第一种方式比较复杂,容易出错,所以,我选择了第二种方式,将两张表联合起来.      下面是对两张表联合起来的查询的语句:   查询结果如下:   但是,,实际

MySQL实现两张表数据的同步方法总结

有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录.两张表的结构不同,需要将其中几个字段对应起来.可以用下面的触发器实现. 表A的触发器: begin set @disable=1; if @disable=1 and NOT EXISTS(SELECT 1 FROM tableB where ID=new.ID) then   insert into tableB (ID,对应字段1) values(new.ID,new.对应字

数据库查询-数据库 关联查询 给予参数 两张表

问题描述 数据库 关联查询 给予参数 两张表 有表一 ID name 表二 ID address 1 123 1 2333 2 456 2 111233 3 3445 4 5667778 两张表通过 内连接 select * from 表1 inner join 表2 course on 表1.ID= 表2.ID 显示 共有的 ID name address 1 123 2333 2 456 111233 我现在我想通过表2的ID 1 查询 表1 的 name 值 sql 语句应该怎么写? 新手

sql-如何将数据库表的两张表进行合并查询

问题描述 如何将数据库表的两张表进行合并查询 有两张表,数据列均不一样,要将两张表的数据合并到一起,想应的sql怎么拼接呢?求大神解答,不胜感激! 解决方案 你想怎么合并? 如果是按照关系合并,可以这么写 select a.*, b.* from a join b on a.id = b.aid 如果是数据合并(假设两个表都有 相同列1 相同列2 两个字段),那么可以这样 select a.相同列1, a.相同列2 from a union select b.相同列1, b.相同列2 from

数据库是sql server,现有两张表,用lambda表达式做一个查询

问题描述 数据库是sql server,现有两张表,用lambda表达式做一个查询 表t1有7个字段,包括id,code:表t2有5个字段,包括id: 现在要查询:t2上id与t1上的id相同且code为3的t1上的所有字段. 解决方案 var query = from x in t1 join y in t2 on x.id equals y.id where x.code == 3 select new { x, y };

SQL语句查询服务器不同库的两张表联查

同台服务器不同库的两张表联查 这种方法只限于在同台服务器的数据库. 一.建立两个数据库,库A(表a) 和 库B(表b) . 二.给两个库分配同样的帐号权限. 三.在查询的时候使用下面语句:  代码如下 复制代码 select * from A.dbo.a, B.dbo.b where A.dbo.a.id=B.dbo.b.id   这个sql语句达到的效果就是 库A 和 库B  中,表a 和 表b 中id相等的数据. 以上方法就是一个简单的同服务器不同库的连表查询. 不同服务器不同数据库两张表连

mvc4-MVC4中,用LINQ查询两张表的内容,然后显示在列表中

问题描述 MVC4中,用LINQ查询两张表的内容,然后显示在列表中 如题,新手才接触MVC 请高手帮忙解答 .万分感谢 ,PS:不要说把两个实体层写在一个类中.这样太麻烦 而且不方便 解决方案 把两个实体封装在一个model里面,然后在view层里面直接model.每一个实体就行了,你可以试试 解决方案二: 还有一点的是,我不太会json,如果说用json的方式去实现,麻烦上一下源码. 谢谢了 解决方案三: 两张表有关系么?要是有关系 ,设置一下表关系,查询时,只查主键的表,外键的表内容 ,就自

hibernate查询两张表问题,求解答?

问题描述 hibernate查询两张表问题,求解答? 我有 user表 : 有name,age,等等 course表: coursename,score,teachername,user_ID(user主键) 现在我需要前台展示一个数据表 学生姓名 课程 分数 应该怎么实现啊?使用链表吗? ?? 解决方案 最好是在数据库把这几张表做一个视图,然后写一个model类对应这个视图,这样更简单方便点 解决方案二: 如果这2张表有关联的话,,hibernate会自动级联的,查user就会把course查