接连查询和分组查询

一. 分组查询

1.语法

SELECT ... FROM ... GROUP BY ...

--分组查询Group by
    select COUNT(*) as 学生人数,GradeId as 年级编号 from Student group by GradeId

2.进行多表之间的分组查询

--查询每门课程的平均分
    --where 和 group by 和 order by 的顺序
    select AVG(StudentResult) as 平均分,SubjectName as 课程名称 from Subject,Result
    where Subject.SubjectId=Result.SubjectId group by Subject.SubjectName order by 平均分

3.多列分组

--查询每学期男女同学的总人数
    select COUNT(*) as 学生人数,GradeId as 年级编号,Sex as 性别 from Student group by GradeId,Sex

4.使用having字句帮助group by进行分组条件筛选,注意:条件必须在聚合函数内或者查询的分组条件内

--查询学生总人数超过5人的年级
    select COUNT(*) as 学生人数,GradeId as 年级编号 from Student group by GradeId having COUNT(*) >5

二. 内连接 inner join on

1.内连接可以不用区分表与表之间的顺序,但是要指定好关系
   2.内连接可以将inner省略
   3.通where语句效果相同

select stu.StudentName,res.StudentResult,res.SubjectId from Student as stu inner join Result as res on (stu.StudentNo=res.StudentNo)

4.在查询不同记录时,会将表与表中的记录数相乘然后减去相同的记录数

select stu.StudentName,res.StudentResult,res.SubjectId from Result as res  inner join Student as stu on (stu.StudentNo<>res.StudentNo)

例如:12*10-10

三. 外连接

1.左外连接 LEFT JOIN 左边的表作为主表

select StudentName,StudentResult,Student.StudentNo from Student LEFT JOIN Result on Student.StudentNo=Result.StudentNo

2.右外连接  RIGHT JOIN 右边的表作为主表

select StudentName,StudentResult,Student.StudentNo from Student RIGHT JOIN Result on Student.StudentNo=Result.StudentNo

原文地址:https://www.cnblogs.com/rzbwyj/p/9380560.html

时间: 2024-07-31 10:12:34

接连查询和分组查询的相关文章

S1/C#语言和数据库技术基础/11-连接查询和分组查询

分组查询 采用分组查询的T-SQL语句如下. SELECT   CourseID,AVG(Score)   AS   课程平均成绩 FROM   Score GROUP   BY   CourseID (1)查询男女学生的人数各是多少 SELECT   COUNT(*)    AS   人数,SSex    FROM   Students GROUP   BY   SSex (2)查询每个年级的总人数 SELECT   COUNT(*)   AS   年级人数,SGrade   FROM   S

【Hibernate】Hibernate的聚类查询、分组查询、排序与时间之差

在Hibernate中的HQL语句其实能够基本能够实现SQL语句所做的事情,正如jQuery至于javascript一样.虽然HQL语句是对类的查询,但是HQL在实行聚类查询.分组查询.排序与时间之差等查询,也无须把查询结果查询出来,再通过对List的处理才得到结果. 比如有一张如下的Testtable表: 要像<[Mysql]求出离最近相差X天的项,sql语句关于日期的比对>(点击打开链接)一样,查询date字段离现在具有30年的项有多少,SQL语句则这样写: select count(*)

连表查询和分组查询

表连接和分组链接 1.分组查询 01.分组查询是按某一列分组,相同的列合并,查询出结果 02.Group by 关键字 03.分组查询支持的条件: 001.年级 002.姓氏 003.地址 004.年龄 04.语法 select 列名 from 表明 where 条件 group by 列名 *group by中查询的列,必须出现在查询列中!!! *分组的顺序为由前到后 2.having 01.对分组后的数据进行筛选,将"组"看做"列"来限定条件 02.语法 sel

Django学习【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系(one-to-many). 创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMany(&qu

Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系(one-to-many). 创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMany("要绑定关系的表名"

Django Mysql数据库-聚合查询与分组查询

一.聚合查询与分组查询(很重要!!!) 聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合 from django.db.models import Avg,Sum,Count,Max,Min # 1.查询所有图书的平均价格 print(models.Book.objects.all().aggregate(Avg("price"))) aggregate()是QuerySet 的一个终止子句(也就是返回的不再是一个QuerySet集合的时候),意思是说

[Mysql 查询语句]——分组查询group by

#group by(1) group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组(2) group by可用于单个字段分组,也可用于多个字段分组 select * from employee; +------+------+--------+------+------+-------------+ | num | d_id | name | age | sex | homeaddr | +------+------+--------+------+------+----

连接查询和分组查询

一.分组查询:用于统计时经常使用分组查询 1.group by分组 01.例如查询每个年级的总人数 --一旦通过group by分组,那么我们只能获取组相关的信息,而不能获取组中成员的信息 --在select后只能跟聚合函数和group by后面的列,其他列不允许 1 select gradeid as 年级编号,COUNT(studentno) as 总人数 2 from student 3 group by gradeid 聚合函数: sum()--count()--max() min()-

关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询

http://www.jianshu.com/p/eeb6a898d4ec 前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. SQL数据查询 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]- FROM <表名或视图名>[,<表名或视图名>]- [WHERE <条件表达式>] [GROUP BY <列名> [HAVING &l