关于分组统计注意事项

 1 --关于分组统计注意事项。
 2 --注:本文不讨论数据库表设计,故不要把精力放在关于表设计是否合理的问题上。
 3
 4 USE [Cest_TestDB]
 5 GO
 6 /****** Object:  Table [dbo].[T_Scores]    Script Date: 2014/8/28 9:47:21 ******/
 7 SET ANSI_NULLS ON
 8 GO
 9 SET QUOTED_IDENTIFIER ON
10 GO
11 --分数表
12 CREATE TABLE [dbo].[T_Scores](
13     [ID] [int] IDENTITY(1,1) NOT NULL,
14     [SubjectName] [nvarchar](50) NULL, --学科名称 不唯一
15     [GradeName] [nvarchar](50) NULL, -- 年级名称 不唯一
16     [Score] [decimal](18, 2) NULL, -- 分数
17     [StudentName] [nvarchar](50) NULL, -- 学生姓名 不唯一
18  CONSTRAINT [PK_T_Scores] PRIMARY KEY CLUSTERED
19 (
20     [ID] ASC
21 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
22 ) ON [PRIMARY]
23
24 GO
25 SET IDENTITY_INSERT [dbo].[T_Scores] ON
26 -- 测试数据
27 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (1, N‘语文‘, N‘一年级‘, CAST(100.00 AS Decimal(18, 2)), N‘小白‘)
28 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (2, N‘数学‘, N‘一年级‘, CAST(90.00 AS Decimal(18, 2)), N‘小白‘)
29 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (3, N‘语文‘, N‘二年级‘, CAST(100.00 AS Decimal(18, 2)), N‘小苹果‘)
30 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (4, N‘数学‘, N‘二年级‘, CAST(90.00 AS Decimal(18, 2)), N‘小苹果‘)
31 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (5, N‘英语‘, N‘三年级‘, CAST(60.00 AS Decimal(18, 2)), N‘萌萌哒‘)
32 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (8, N‘语文‘, N‘一年级‘, CAST(100.00 AS Decimal(18, 2)), N‘小黑黑‘)
33 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (9, N‘语文‘, N‘一年级‘, CAST(100.00 AS Decimal(18, 2)), N‘小白白‘)
34 INSERT [dbo].[T_Scores] ([ID], [SubjectName], [GradeName], [Score], [StudentName]) VALUES (10, N‘数学‘, N‘一年级‘, CAST(90.00 AS Decimal(18, 2)), N‘小黑黑‘)
35 SET IDENTITY_INSERT [dbo].[T_Scores] OFF
36
37
38
39
40
41
42 SELECT * FROM T_Scores AS T
43
44 SELECT DISTINCT SubjectName FROM T_Scores  --SubjectName只保留一个
45 SELECT DISTINCT SubjectName,GradeName FROM T_Scores --SubjectName,GradeName组合唯一
46
47 --统计各学科各年级分数
48 SELECT * FROM T_Scores AS T
49 ------------------------------------------
50 SELECT T.SubjectName,T.GradeName, SUM(T.Score) AS Sum_Score
51 FROM T_Scores AS T
52 LEFT OUTER JOIN (
53     SELECT DISTINCT SubjectName,GradeName FROM T_Scores)
54 AS B ON T.SubjectName = B.SubjectName AND T.GradeName = B.GradeName --分组统计注意组合条件不能少!!,否则统计结果不正确
55 GROUP BY T.SubjectName, T.GradeName
时间: 08-27

关于分组统计注意事项的相关文章

Oracle按不同时间分组统计

Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- 14-2月 -08 20 10-3月 -08 2 14-4月 -08 6 14-6月 -08 75 24-10月-09 23 14-11月-09 45 04-8月 -10 5 04-9月 -10 44 04-10月-10 88 注意:为了显示更直观,如下查询已皆按相应分组排序 1.按年份分组 sel

分组统计:count,group by,having, order by

--统计男女生的总人数select COUNT(*) from Student where Sex='男'select COUNT(*) from Student where Sex='女'--统计每一个班级的总人数select COUNT(*) from Student where ClassId=1--分组统计:需要按班级分组,每一个组得到一个统计结果--select 字段列表 from 表列表 where 数据源筛选 group by 分组字段列表 order by 排序字段列表selec

分组统计查询(学习笔记)

查询出公司每个月支出的工资总和 --查询出公司每个月支出的工资总和 SELECT SUM(sal) FROM emp; 查询出公司的最高工资,最低工资和平均工资 --查询出公司的最高工资,最低工资和平均工资 SELECT MAX(sal),MIN(sal),ROUND(AVG(sal),2) FROM emp; 统计出公司最早雇佣和最晚雇佣的雇佣日期 --统计出公司最早雇佣和最晚雇佣的雇佣日期 SELECT MIN(hiredate) 最早雇佣日期 , MAX(hiredate) 最晚雇佣日期

010.简单查询、分组统计查询、多表连接查询(sql实例)

-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SELECT UNION --SELECT 'HAHA',1,32--UNION ALL --全部显示/显示重复数据 即使集合相同--UNION---------将查询的两个结果集合并.结构必须一致 -->常见面试题 --SELECT 'HEHE',2,33------将查询结果添加到列表中(子查询)IN

003.分组统计查询和表连接查询

--分组统计查询 group by having 1 select 分组字段 ,聚合函数 2 having 后常跟聚合函数,也可以跟分组字段 3 where 后不可以直接跟聚合函数 4 where(筛选行) -group by (分组) -having (筛选组) --表连接查询 1 笛卡尔积 (交叉连接 cross join) a*b A) SELECT * FROM A,B B) SELECT * FROM A CROSS JOIN B 2 内连接 原理: 将两个表中关联字段相等的行查询出来

Excel 中使用SQL 语句查询数据(八)-----用Group by 进行分组统计

今天要和大家分享用在sql 语句中使用group by来进行分组统计.大家首先来看一下数据源. 用OLE DB 打开数据源,(步骤请参考本系列第一篇博文) 最后一条语句group by Item ,就是以Item 列分组. 结果如下 按照item 分类汇总

组函数及分组统计

分组函数 SQL中常用的分组函数 Count(): 计数 Max():求最大值 Min():求最小值 Avg():求平均值 Sum():求和 -- 统计emp表中的人数 select count(*) from emp; -- 统计获得奖金的人数 select count(comm) from emp; -- 求所有雇员的最低工资 select min(sal) from emp; -- 求所有雇员的最高工资 select max(sal) from emp; -- 求部门编号为20的雇员的平均

6.数据分组-统计信息

---数据分组-统计信息----- --select 字段列表from 表列表 where 对数据源进行数据筛选group by 分组字段列表Order by 排序字段列表 --1.得到所有学员总人数 select COUNT(*) from Student --2.得到男女生的人数 select COUNT(*) from Student where Sex='男' select COUNT(*) from Student where Sex='女' --使用分组统计 select COUNT

《卸甲笔记》-分组统计查询

统计函数对比 1查询出公司每个月支出的月工资总和 Oracle SQL> select SUM(sal) from emp; SUM(SAL) ---------- 29025 PPAS scott=# select SUM(sal) from emp; sum ---------- 29025.00 (1 row) 2查询出公司的最高工资,最低工资,平均工资 Oracle SQL> select AVG(sal),ROUND(AVG(sal),2),MAX(sal),MIN(sal) fro