sql复习-分组

--数据分组-统计信息
--查询每个班级的总人数
select COUNT(8) from Student
select ClassId, COUNT(*) from Student group by ClassId
--得到男生,女生的总人数  group by按指定的字段进行分类
select sex, COUNT(*) from Student group by sex

--与聚合函数一起出现在查询中的其它列,只有两个可能性:被聚合,被分组,它往往就是被分组
select sex, COUNT(*) from Student

select distinct sex  from Student
select COUNT(*) from Student

select classid, COUNT(*) from Student
select * from Student
--顺序不能变 select(5) top/distinct 7 查询字段 from (1)表列表 where (2)对源数据进行筛选 group by(3) 分组统计字段列表 having (4)对分组统计结果集做筛选 order by (6)对最终的结果集做记录重排

--where是对源数据做筛选的。它只能去使用from后面的表中所指定的列
--聚合不应出现在 WHERE 子句中,就意味着聚合函数的条件不能通过where来指定
--如果是对分组之后的结果集做筛选,那么就需要使用having
--having的列是从group by中获取的
--对分组统计结果集做筛选后再进行数据的显示。
select ClassId, COUNT(*) num   from Student  group by ClassId  order by num desc

select top 2 ClassId, COUNT(*) num   from Student  group by ClassId  order by num desc

--1.查询每个班级的总学时数,并按照升序排列
--2.查询每个参加考试的学员的平均分
--3.查询每门课程的平均分,并按照降序排列
--4.查询每个班级男女生的人数

--当你看到类似于:各个,各自,每个,不同这些词的时候需要 考虑分组
select ClassId, SUM(ClassHour) from Subject where ClassId is not null group by ClassId

select StudentNo,AVG(StudentResult) from Result group by StudentNo

select SubjectId,AVG(StudentResult) from Result group by SubjectId

--查询每个班级男女生的人数
select ClassId,sex, COUNT(*) from Student group by ClassId,sex order by ClassId,sex
时间: 2024-08-17 14:08:46

sql复习-分组的相关文章

SQL Server 分组后取Top N

SQL Server 分组后取Top N(转) 近日,工作中突遇一需求:将一数据表分组,而后取出每组内按一定规则排列的前N条数据.乍想来,这本是寻常查询,无甚难处.可提笔写来,终究是困住了笔者好一会儿.冥思苦想,遍查网络,不曾想这竟然是SQL界的一个经典话题.今日将我得来的若干方法列出,抛砖引玉,以期与众位探讨. 正文之前,对示例表结构加以说明. 表SectionTransactionLog,用来记录各部门各项活动的日志表 SectionId,部门Id SectionTransactionTyp

SQL数据分组后取最大值或者取前几个值(按照某一列排序)

今日做项目的时候,项目中遇到需要将数据分组后,分组中的最大值,想了想,不知道怎么做,于是网上查了查,终于找到了思路,经过比较这个查询时目前用时最快的,其实还有别的方法,但是我觉得我们只掌握最快的方法就行 ,好了,不说废话了! 直接上内容吧:以下数据是通过 SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' group

SQL语句--分组的Top查询

代码 SELECT A.* FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY Host ORDER BY Host,count(EntranceURL) DESC) AS ROW, Host, EntranceURL as PageURL ,count(EntranceURL) as EnterTimes ,sum(CASE WHEN IsBounce=1 THEN 1 ELSE 0 END ) AS BounceTimes FROM UserLoyalt

sql实现分组并排序

今天遇到一个sql,分组求和过后排序,就想一句sql实现 开始是这么想的: select re.c, re.d from (select c, max(d) as d from a group by c) re order by re.d desc 总感觉重复啰嗦,就百度了一下下(以为要用having,结果就下面简单一句搞定): select c,max(d) from a group by c order by max(d) desc 资料来源

Sql复习之安全性与权限管理+vmware增加硬盘容量

参考资料: http://www.cnblogs.com/Jackeyzhang/archive/2011/05/18/2049621.html VmWare虚拟机增加硬盘容量的方法 http://blog.csdn.net/superchanon/article/details/8255566 DOS中切换盘符(直接CD不行) ? 参考资料:http://blog.csdn.net/songyuhongnannan/article/details/7279070 SQLServer 角色与权限

sql 复习练习

一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack4.说明:创建新表create ta

SQL复习五(索引)

SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 下面举两个简单的例子: 图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某

SQL复习框架

数据库系统 数据:date描述事物的符号 ,可以出现多种载体,比如:声音.图片.文字等 数据库:database(简写db)数据的仓库    在计算机内可以长期存储,并且可以共享的数据的集合 数据库管理系统:(DBMS)管理数据库的一些软件 sql 2008   mysql  oracle  DB2 数据库系统:包含数据库管理系统和管理员 (DBS) (第一部分):数据库 1:系统数据库 n  Master:记录系统信息sys开头 n  Msdb:代理数据库发出作业警报 n  Tempdb:临时

SQL Server分组查询某最大值的整条数据(包含linq写法)

想实现如下效果,就是分组后时间最大的那一条数据: 1.SQL SELECT * FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY RIP_GUID ORDER BY RU_CreatedTime DESC ) rn FROM RIP_FlowInfo ) t WHERE t.rn <= 1; 2.LINQ var groupQuery = from t in query group t by t.RIP_Guid into g select n