第四讲 SQL计算与分组统计

合集下载

SQL汇总和分组数据

SQL汇总和分组数据

SQL汇总和分组数据SQL是一种用于管理和操作关系型数据库的语言,它提供了各种功能和命令,用于对数据进行查询、插入、更新和删除等操作。

汇总和分组数据是SQL中常用的功能之一,可以用于对数据进行统计和分析。

在SQL中,可以使用如下几个关键字来实现汇总和分组数据的操作:1.SELECT:用于查询数据,可以通过SELECT命令选择相应的列或者使用通配符"*"选择所有列。

2.FROM:用于指定查询的数据源,即要查询的表或者视图的名称。

3.GROUPBY:用于对数据进行分组。

可以按照一个或多个列来进行分组,分组后的数据将会根据指定的列值进行分组。

4.HAVING:用于对分组后的数据进行过滤。

可以使用逻辑运算符和聚合函数对分组后的数据进行筛选。

5.ORDERBY:用于对查询结果进行排序,可以按照一个或多个列进行排序。

下面是一个示例,展示如何使用SQL对数据进行汇总和分组:假设有一个存储销售订单信息的订单表,其中包含以下字段:订单号、客户名、订单金额和订单日期。

现在需要查询每个客户的订单总金额,并按照总金额降序排列。

```sqlSELECT客户名,SUM(订单金额)AS总金额FROM订单表GROUPBY客户名ORDERBY总金额DESC;```上述SQL语句中,我们使用了SUM函数来计算每个客户的订单总金额,并使用GROUPBY将结果按照客户名进行分组。

最后,使用ORDERBY将结果按照总金额降序排序。

除了SUM函数外,还可以使用其他聚合函数(如COUNT、AVG、MIN和MAX)对数据进行汇总和分组。

同时,还可以在HAVING子句中使用逻辑运算符和聚合函数来对分组后的数据进行筛选。

除了单一列的分组,还可以按照多个列进行分组。

例如,我们希望按照客户名和订单日期对数据进行分组,可以使用如下SQL语句:```sqlSELECT客户名,订单日期,SUM(订单金额)AS总金额FROM订单表GROUPBY客户名,订单日期ORDERBY客户名,订单日期;```上述SQL语句中,我们按照客户名和订单日期进行了分组,并计算每个分组的订单总金额。

学生各门课程成绩统计SQL语句大全

学生各门课程成绩统计SQL语句大全

学⽣各门课程成绩统计SQL语句⼤全学⽣成绩表(stuscore):姓名:name课程:subject分数:score学号:stuid张三数学891张三语⽂801张三英语701李四数学902李四语⽂702李四英语802创建表SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[stuscore]( [name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [subject] [varchar](50) COLLATE Chinese_PRC_CI_A问题:1.计算每个⼈的总成绩并排名(要求显⽰字段:姓名,总成绩)2.计算每个⼈的总成绩并排名(要求显⽰字段: 学号,姓名,总成绩)3.计算每个⼈单科的最⾼成绩(要求显⽰字段: 学号,姓名,课程,最⾼成绩)4.计算每个⼈的平均成绩(要求显⽰字段: 学号,姓名,平均成绩)5.列出各门课程成绩最好的学⽣(要求显⽰字段: 学号,姓名,科⽬,成绩)6.列出各门课程成绩最好的两位学⽣(要求显⽰字段: 学号,姓名,科⽬,成绩)7.如下:学号姓名语⽂数学英语总分平均分8.列出各门课程的平均成绩(要求显⽰字段:课程,平均成绩)9.列出数学成绩的排名(要求显⽰字段:学号,姓名,成绩,排名)10.列出数学成绩在2-3名的学⽣(要求显⽰字段:学号,姓名,科⽬,成绩)11.求出李四的数学成绩的排名12.如下:课程不及格(0-59)个良(60-80)个优(81-100)个13.如下:数学:张三(50分),李四(90分),王五(90分),赵六(76分)答案:1.计算每个⼈的总成绩并排名select name,sum(score) as allscore from stuscore group by name order by allscore2.计算每个⼈的总成绩并排名select distinct ,t1.stuid,t2.allscore from stuscore t1,( select stuid,sum(score) as allscore from stuscore group by stuid)t2where t1.stuid=t2.stuidorder by t2.allscore desc3. 计算每个⼈单科的最⾼成绩select t1.stuid,,t1.subject,t1.score from stuscore t1,(select stuid,max(score) as maxscore from stuscore group by stuid) t2where t1.stuid=t2.stuid and t1.score=t2.maxscore4.计算每个⼈的平均成绩select distinct t1.stuid,,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2where t1.stuid=t2.stuid5.列出各门课程成绩最好的学⽣select t1.stuid,,t1.subject,t2.maxscore from stuscore t1,(select subject,max(score) as maxscore from stuscore group by subject) t2where t1.subject=t2.subject and t1.score=t2.maxscore6.列出各门课程成绩最好的两位学⽣select distinct t1.* from stuscore t1 where t1.id in (select top 2 stuscore.id from stuscore where subject = t1.subject order by score desc) order by t1.subject7.学号姓名语⽂数学英语总分平均分select stuid as 学号,name as 姓名,sum(case when subject='语⽂' then score else 0 end) as 语⽂,sum(case when subject='数学' then score else 0 end) as 数学,sum(case when subject='英语' then score else 0 end) as 英语,sum(score) as 总分,(su8.列出各门课程的平均成绩select subject,avg(score) as avgscore from stuscoregroup by subject9.列出数学成绩的排名declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore where subject='数学' order by score descdeclare @id intset @id=0;update @tmp set @id=@id+1,pm=@idselect * from @ select DENSE_RANK () OVER(order by score desc) as row,name,subject,score,stuid from stuscore where subject='数学'order by score desc10. 列出数学成绩在2-3名的学⽣select t3.* from(select top 2 t2.* from (select top 3 name,subject,score,stuid from stuscore where subject='数学'order by score desc) t2 order by t2.score) t3 order by t3.score desc11. 求出李四的数学成绩的排名declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore where subject='数学' order by score descdeclare @id intset @id=0;update @tmp set @id=@id+1,pm=@idselect * from @12. 课程不及格(-59)良(-80)优(-100)select subject, (select count(*) from stuscore where score<60 and subject=t1.subject) as 不及格,(select count(*) from stuscore where score between 60 and 80 and subject=t1.subject) as 良,(select count(*) from stuscore where score >80 and su13. 数学:张三(50分),李四(90分),王五(90分),赵六(76分)declare @s varchar(1000)set @s=''select @s =@s+','+name+'('+convert(varchar(10),score)+'分)' from stuscore where subject='数学' set @s=stuff(@s,1,1,'')print '数学:'+@s。

SQL语句13种统计数据方法大全

SQL语句13种统计数据方法大全

SQL统计大全收藏,主要是一些实现统计功能常用的代码,希望对需要的朋友有所帮助1.计算每个人的总成绩并排名select name,sum(score) as allscore from stuscore group by name order by allscore2.计算每个人的总成绩并排名select distinct ,t1.stuid,t2.allscore from stuscore t1,( select stuid,sum(score) as allscore from stuscore group by stuid)t2wheret1.stuid=t2.stuidorder by t2.allscore desc3. 计算每个人单科的最高成绩select t1.stuid,,t1.subject,t1.score from stuscore t1,(select stuid,max(score) as maxscore from stuscore group by stuid) t2wheret1.stuid=t2.stuid and t1.score=t2.maxscore4.计算每个人的平均成绩select distinct t1.stuid,,t2.avgscore from stuscore t1,(select stuid,avg(score) as avgscore from stuscore group by stuid) t2wheret1.stuid=t2.stuid5.列出各门课程成绩最好的学生select t1.stuid,,t1.subject,t2.maxscore from stuscore t1,(select subject,max(score) as maxscore from stuscore group by subject) t2where t1.subject=t2.subject and t1.score=t2.maxscore6.列出各门课程成绩最好的两位学生select distinct t1.* from stuscore t1 where t1.id in (select top 2 stuscore.id from stuscore where subject = t1.subject order by score desc) order by t1.subject7.学号姓名语文数学英语总分平均分select stuid as 学号,name as 姓名,sum(case when subject='语文' then score else 0 end) as 语文,sum(case when subject='数学' then score else 0 end) as 数学,sum(case when subject='英语' then score else 0 end) as 英语,sum(score) as 总分,(sum(score)/count(*)) as 平均分from stuscoregroup by stuid,name order by 总分desc8.列出各门课程的平均成绩select subject,avg(score) as avgscore from stuscoregroup by subject9.列出数学成绩的排名declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore where subject='数学' order by score descdeclare @id intset @id=0;update @tmp set@id=@id+1,pm=@idselect * from @tmpselect DENSE_RANK () OVER(order by score desc) asrow,name,subject,score,stuid from stuscore where subject='数学'order by score desc10. 列出数学成绩在2-3名的学生select t3.* from(select top 2 t2.* from (select top 3name,subject,score,stuid from stuscore where subject='数学'order by score desc) t2 order by t2.score) t3 order by t3.score desc11. 求出李四的数学成绩的排名declare @tmp table(pm int,name varchar(50),score int,stuid int)insert into @tmp select null,name,score,stuid from stuscore where subject='数学' order by score descdeclare @id intset @id=0;update @tmp set@id=@id+1,pm=@idselect * from @tmp where name='李四'12. 课程不及格(-59)良(-80)优(-100)select subject, (select count(*) from stuscore where score<60 and subject=t1.subject) as 不及格,(select count(*) from stuscore where score between 60 and 80 and subject=t1.subject) as 良,(select count(*) from stuscore where score >80 and subject=t1.subject) as 优from stuscore t1 group by subject13. 数学:张三(50分),李四(90分),王五(90分),赵六(76分)declare @s varchar(1000)set @s=''select @s=@s+','+name+'('+convert(varchar(10),score)+'分)' from stuscore where subject='数学' set @s=stuff(@s,1,1,'')print '数学:'+@s。

sql分组用法

sql分组用法

sql分组用法
SQL中的分组用法是指利用GROUPBY子句对查询结果进行分组的操作。

通过分组操作,可以将查询结果按照指定的列或表达式进行分组,并对每个组计算聚合函数的值,如SUM、AVG、COUNT等。

在使用GROUP BY子句时,需要注意以下几点:
1.只有在SELECT语句中使用的列,才可以在GROUP BY子句中使用。

2.GROUP BY子句中可以包含多个列名或表达式,用逗号隔开。

3.GROUP BY子句中的列名或表达式,必须按照SELECT语句中的顺序列出。

4.如果SELECT语句中使用了聚合函数,则除了包含在GROUP BY 子句中的列外,其他列必须使用聚合函数进行计算。

例如,下面的SQL语句查询订单表中每个用户的订单总金额:
SELECT user_id, SUM(amount)
FROM orders
GROUP BY user_id;
在该查询中,使用了GROUP BY子句将订单表按照user_id分组,并使用SUM函数计算每个用户的订单总金额。

总之,SQL中的分组用法可以帮助我们对查询结果进行分组统计,方便我们获取有用的信息。

- 1 -。

sql分组聚合函数

sql分组聚合函数

SQL中提供了多个分组聚合函数,用于对数据进行分组并进行聚合计算。

以下是一些常用的SQL分组聚合函数:
COUNT:用于计算指定列的行数,可以用于统计某个列的非空值数量。

例子:SELECT COUNT(*) FROM table_name; (计算表中的总行数)
SUM:用于计算指定列的总和,适用于数值类型的列。

例子:SELECT SUM(column_name) FROM table_name; (计算某个列的总和)
AVG:用于计算指定列的平均值,适用于数值类型的列。

例子:SELECT AVG(column_name) FROM table_name; (计算某个列的平均值)
MAX:用于获取指定列的最大值。

例子:SELECT MAX(column_name) FROM table_name; (获取某个列的最大值)
MIN:用于获取指定列的最小值。

例子:SELECT MIN(column_name) FROM table_name; (获取某个列的最小值)
GROUP_CONCAT:用于将分组内的值连接成一个字符串。

例子:SELECT GROUP_CONCAT(column_name) FROM table_name GROUP BY group_column; (将某个列的值连接成字符串)
这些函数可以与GROUP BY子句一起使用,根据指定的列对数据进行分组,然后对每个分组应用相应的聚合函数进行计算。

这样可以在SQL查询中实现数据的分组统计和汇总计算。

《SQL Server2016数据库技术及应用》课件任务14 数据库的分组统计查询

《SQL Server2016数据库技术及应用》课件任务14 数据库的分组统计查询

实战训练
提示: (1)集合函数不能用在WHERE子句中,也就是说WHERE子句后面的条 件表达式不能出现聚合函数,而聚合函数可以用于GROUP BY子句中的 HAVING子句中。 ( 2 ) WHERE 子 句 与 HAVING 子 句 的 根 本 区 别 在 于 作 用 对 象 不 同 。 WHERE 子 句 作 用 于 基 本 表 或 者 视 图 , 从 中 选 择 满 足 条 件 的 记 录 。 HAVING子句作用于组内,从中选择满足条件的记录。
1.常用的聚合函数 集合函数用于计算表中的数据,返回单个计算结果。常用的聚合 函数及其功能如表14-1所示。
知识准备
2.ORDER BY子句 可以使用ORDER BY子句对查询结果集排序。ORDER BY子句可以将
查询结果按一个或多个列的值的大小顺序输出。在ORDER BY子句中用 ASC 关 键 字 表 示 升 序 , DESC 关 键 字 表 示 降 序 , 默 认 情 况 为 升 序 。 3.GROUP BY子句
实战训练
【实战训练14-9】在Score表中,查询期末平均成绩在80分以上的学生 的学号和平均成绩,查询结果按照平均成绩降序排序。 任务实施: SELECT Sno 学号, Avg(Endscore) 平均成绩 FROM Score GROUP BY Sno HAVING Avg(Endscore)>=80 ORDER BY Avg(Endscore) DESC
SQL Server 2016 数据库技术及应用
任务13数据库的分组统计查询
知识准备
在数据查询时,经常需要对查询结果进行分类、汇总和计算,比 如,计算学生的总分、平均分等,SQL提供了许多集合函数,增强 了这些基本查询能力。为了进一步统计数据,还经常需要按照某个 类别分组后在组内进行操作。

数据库中如何分类、分组并总计SQL数据

数据库中如何分类、分组并总计SQL数据

数据库中如何分类、分组并总计SQL数据您需要了解如何使用某些SQL子句和运算符来安排SQL数据,从而对它进行高效分析。

下面这些建议告诉您如何建立语句,获得您希望的结果。

以有意义的方式安排数据可能是一种挑战。

有时您只需进行简单分类。

通常您必须进行更多处理——进行分组以利于分析与总计。

可喜的是,SQL提供了大量用于分类、分组和总计的子句及运算符。

下面的建议将有助于您了解何时进行分类、何时分组、何时及如何进行总计。

1、分类排序通常,我们确实需要对所有数据进行排序。

SQL的ORDER BY子句将数据按字母或数字顺序进行排列。

因此,同类数据明显分类到各个组中。

然而,这些组只是分类的结果,它们并不是真正的组。

ORDER BY显示每一个记录,而一个组可能代表多个记录。

2、减少组中的相似数据分类与分组的不同在于:分类数据显示(任何限定标准内的)所有记录,而分组数据不显示这些记录。

GROUP BY子句减少一个记录中的相似数据。

例如,GROUP BY能够从重复那些值的源文件中返回一个的邮政编码列表:SELECT ZIPFROM CustomersGROUP BY ZIP仅包括那些在GROUP BY和SELECT列列表中字义组的列。

换句话说,SELECT列表必须与GROUP列表相匹配。

只有一种情况例外:SELECT列表能够包含聚合函数。

(而GROUP BY不支持聚合函数。

)记住,GROUP BY不会对作为结果产生的组分类。

要对组按字母或数字顺序排序,增加一个ORDER BY子句(#1)。

另外,在GROUP BY子句中您不能引用一个有别名的域。

组列必须在根本数据中,但它们不必出现在结果中。

3、分组前限定数据您可以增加一个WHERE子句限定由GROUP BY分组的数据。

例如,下面的语句仅返回肯塔基地区顾客的邮政编码列表。

SELECT ZIPFROM CustomersWHERE State = 'KY'GROUP BY ZIP在GROUP BY子句求数据的值之前,WHERE对数据进行过滤,记住这一点很重要。

SQL 分组、分类

SQL 分组、分类

在数据库中如何分类、分组并总计SQL数据您需要了解如何使用某些SQL子句和运算符来安排SQL数据,从而对它进行高效分析。

下面这些建议告诉您如何建立语句,获得您希望的结果。

以有意义的方式安排数据可能是一种挑战。

有时您只需进行简单分类。

通常您必须进行更多处理——进行分组以利于分析与总计。

可喜的是,SQL提供了大量用于分类、分组和总计的子句及运算符。

下面的建议将有助于您了解何时进行分类、何时分组、何时及如何进行总计。

欲了解每个子句和运算符的详细信息,请查看在线书籍。

#1:分类排序通常,我们确实需要对所有数据进行排序。

SQL的ORDER BY 子句将数据按字母或数字顺序进行排列。

因此,同类数据明显分类到各个组中。

然而,这些组只是分类的结果,它们并不是真正的组。

ORDER BY显示每一个记录,而一个组可能代表多个记录。

#2:减少组中的相似数据分类与分组的最大不同在于:分类数据显示(任何限定标准内的)所有记录,而分组数据不显示这些记录。

GROUP BY子句减少一个记录中的相似数据。

例如,GROUP BY能够从重复那些值的源文件中返回一个唯一的邮政编码列表:SELECT ZIPFROM CustomersGROUP BY ZIP仅包括那些在GROUP BY和SELECT列列表中字义组的列。

换句话说,SELECT列表必须与GROUP列表相匹配。

只有一种情况例外:SE LECT列表能够包含聚合函数。

(而GROUP BY不支持聚合函数。

)记住,G ROUP BY不会对作为结果产生的组分类。

要对组按字母或数字顺序排序,增加一个ORDER BY子句(#1)。

另外,在GROUP BY子句中您不能引用一个有别名的域。

组列必须在根本数据中,但它们不必出现在结果中。

#3:分组前限定数据您可以增加一个WHERE子句限定由GROUP BY分组的数据。

例如,下面的语句仅返回肯塔基地区顾客的邮政编码列表。

SELECT ZIPFROM CustomersWHERE State = 'KY'GROUP BY ZIP在GROUP BY子句求数据的值之前,WHERE对数据进行过滤,记住这一点很重要。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.2 数值型
数值型数据是可以进行四则运算的数据,分为整形和实 型。 ACCESS数值类型的种类及其取值范围
数字类型 字节(整) 整数 长整数 单精度数 双精度数 0~255
值的范围 32768~32767 2 147 483 648~2 147 483 647 3.4×1038~3.4×1038 1.79734×10308~ 1.79734×10308
10. HAVING 子句
SELECT 学生编号, avg(成绩) as avgC, count(成绩) as countC, max(成绩) As maxC, min(成绩) As minC, sum(成绩) As sumC, sum(成绩)/count(成绩) As averageC FROM 选课成绩 GROUP BY学生编号 HAVING 学生编号=‘980104’
1.字符型 2.数值型 3.日期时间型 4.逻辑型
3.1字符型
字符型数据描述不具有计算能力的文字数 据类型,是最常用的数据类型之一。 字符型数据(Character)是由汉字和 ASCII字符(英文字符、数字字符、空格及其 他专用字符)组成; 使用时必须用定界符双引号(“”)或单引号 (‘ ’)括起来。
2.3 ACCESS-SQL支持项函数 支持项函数
用表达式生成器生成表达式并不总是方便的,其意义 用表达式生成器生成表达式并不总是方便的, 在于我们可以从中知道特定的SQL提供了那些函数, 提供了那些函数, 在于我们可以从中知道特定的 提供了那些函数 及其函数的语法。 及其函数的语法。
3.常用数据类型 常用数据类型
10. HAVING 子句
SELECT 学生编号, avg(成绩) as avgC, count(成绩) as countC, max(成绩) As maxC, min(成绩) As minC, sum(成绩) As sumC, sum(成绩)/count(成绩) As averageC FROM 选课成绩 GROUP BY学生编号 HAVING left(学生编号)=‘98’
小数位数 无 无 无 7 15
字段长度 1字节 2字节 4字节 4字节 8字节
3.3 日期时间型
日期时间型数据(Date Time)是描述日期 和时间的数据。 其默认格式为{mm/dd/yyyy hh:mm:ss}。
– 其中yyyy代表年,前两个mm代表月,dd代表日, hh代表小时,后两个mm代表分钟,ss代表秒。
– 函数名(自变量表 函数名 自变量表) 自变量表
自变量表可以是一个变量或多个自变量,也可以为空,即:函 自变量表可以是一个变量或多个自变量,也可以为空, 数名(),函数名后面的一对圆括号不能省略。 数名 ,函数名后面的一对圆括号不能省略。
按功能可划分为: 按功能可划分为:
– 数学函数、字符串函数、日期和时间函数、类型转换 数学函数、字符串函数、日期和时间函数、 函数、测试函数。 函数、测试函数。
11.WHERE 和 HAVING
WHERE 针对被查询表所提的条件,不能用计算项; HAVING 子句是针对SELECT结果的,可以用已经命名的 计算项。 作业: 7. 在选课成绩表中求“99”级每个学生的选课门数。分别 写出用“WHERE”和“HAVING”子句实现的SELECT语句。 8. 在选课成绩表中求“101”课程的选课人数,最高分,最 低分,平均成绩。分别写出用“WHERE”和“HAVING”子 句实现的SELECT语句。 9.在选课成绩表中求“101”,“102”课程的选课人数,最 高分,最低分,平均成绩。分别写出用“WHERE”和 “HAVING”子句实现的SELECT语句。
5.1数学函数(数值函数 数学函数 数值函数 数学函数 数值函数)
SELECT 选课成绩.学生编号 学生编号, 选课成绩 学生编号 选课成绩.课程编号 课程编号, 选课成绩 课程编号 选课成绩.成绩 成绩 成绩, 成绩]-80) as 成绩 成绩2, 选课成绩 成绩 ([成绩 Abs([成绩 成绩]-80) AS abs成绩 成绩2, 成绩 成绩 ([成绩 成绩]/23) as 成绩 , 成绩3, 成绩 Round ([成绩 成绩]/23) as Round成绩 成绩3 成绩 成绩 FROM 选课成绩 选课成绩;
2.QUERY-交互式查询界面 交互式查询界面 SQL-SELECT生成器 生成器
2.1 启动 启动QUERY
2.2 定义查询
右键快捷
例子
成绩>=60
‘合格’ ‘不合格’
例子
改为:, 选课成绩.课程编号, IIf([成 绩]>=60,'合格','不合格') AS 考查总评 FROM 选课成绩;
9. 多项分组
SELECT 学生编号,课程编号, avg(成绩) as avgC, count(成绩) as countC, max(成绩) As maxC, min(成绩) As minC, sum(成绩) As sumC, sum(成绩)/count(成绩) As averageC FROM 选课成绩 GROUP BY学生编号,课程编号
第四讲 SQL计算与分组统计 计算与分组统计
1. 计算项的必要性
例子
Select 学生编号,课程编号,成绩, iif(成绩>=60,’合格’,’不合格’) as 考查总评 From 选课成绩
例子
Select 学生编号,课程编号,成绩,iif(成绩>=60,’合 格’,’不合格’) as 考查总评,(成绩-60)/20+1 as 绩点 From 选课成绩
– 数值型:整数、小数或科学计数 数值型:整数、 – 字符型:用 “ ” 、 ‘ ’括起来 字符型: – 逻辑型:T 或 F 逻辑型:
4.2变 量(项的名称) 变 项的名称)
在命令操作、程序运行过程中其值可以变化的量。 在命令操作、程序运行过程中其值可以变化的量。 包括: 包括:
– 内存变量 – 字段变量。 字段变量。
作业1:编制一个查询测试Int,Fix,Sgn函数的功能.
5.2字符串函数 字符串函数
字符串长度函数:LEN 字符串长度函数: 取左、右子串函数 取左、右子串函数LEFT|RIGHT 删除字符串中空格:LTRIM, RTRIM和 删除字符串中空格: 和 TRIM
SELECT 选课成绩.学生编号 学生编号, 选课成绩 学生编号 选课成绩.课程编号 课程编号, 选课成绩 课程编号 [学生编号 课程编号 AS 学生课程编号 学生编号]+[课程编号 学生课程编号, 学生编号 课程编号] Len([学生编号 AS len学生编号 学生编号]) 学生编号, 学生编号 学生编号 ' '+[课程编号 AS 表达式 课程编号] 表达式1, 课程编号 Ltrim(' '+[课程编号 AS ltrim表达式 课程编号]) 表达式1 课程编号 表达式 FROM 选课成绩 选课成绩;
长度固定为8位。 省略时间部分可表示日期。
3.4 逻辑型
逻辑型数据(Logic)是描述客观事物真假 的数据,用于表示逻辑判断结果。 逻辑型数据只有真(.T.)和假(.F.)两种 值, 长度固定为1位。
4.常值、变量 常值、 常值
常量 变量
4.1、常 量 、
分类(根据其数据类型) 分类(根据其数据类型)
8. 分组子句: GROUP BY
SELECT 学生编号, avg(成绩) as avgC, count(成绩) as countC, max(成绩) As maxC, min(成绩) As minC, sum(成绩) As sumC, sum(成绩)/count(成绩) As averageC FROM 选课成绩 GROUT BY 学生编号; 作业: 4. 在选课成绩表中求每个学生的选课门数; 5. 在选课成绩表中求按课程的选课人数,最高分,最低分,平 均成绩; 6. 在选课成绩表中求每个学生的绩点(用IIF函数计算绩点)。
7. SQL分类 统计函数
平均 计数 最大/最小 求和
SQL分类统计函数
SELECT avg(成绩) as avgC, count(成绩) as countC, max(成绩) As maxC, min(成绩) As minC, sum(成绩) As sumC, sum(成绩)/count(成绩) As averageC FROM 选课成绩;
命名规则
– – – – 1. 以字母、汉字、下划线开头; 以字母、汉字、下划线开头; 2. 由字母、汉字、数字、下划线组成; 由字母、汉字、数字、下划线组成; 3. 至多 至多128个/10字符; 字符; 个 字符 4. 不可与系统保留字同名。 不可与系统保留字同名。
5.函数 函数
函数是预先编好的一系列子程序 应用遇到此类问题就以调用相应的函数,也就是执 应用遇到此类问题就以调用相应的函数 也就是执 行相应的函数子程序。 行相应的函数子程序。 函数的一般形式是: 函数的一般形式是:
作业2:编制一个查询测试Trim,Rtrim,Left,Right函数 的功能.
6.IFF函数嵌套 函数嵌套
SELECT 学生编号, 课程编号, 成绩,
IIf([成绩]>=60,'合格',IIf([成绩]>=40,'允许补考','不允许补考')) AS 表达式1
FROM 选课成绩;
作业3:编制一 个查询将成绩 分为A,B,C,D 四级。
相关文档
最新文档