1、什么是数值分组?
这里说的数值分组是指对数值型字段,按照一定的依据重新分组生成新字段。
如图,表1是原始数据,在表1中添加一个辅助列“分组”就形成了表2.字段“分组”是根据字段“成绩”决定的。学生成绩在0-59区间为“不及格”,在60-75区间为“及格”……分组的依据见表3.把表1变成表2就是数值分组。
2、怎样用sql server实现数值分组?
这是导入数据库的成绩表,见下图:
方法1:
修改法,在成绩表新建一个字段“等级”,然后用update结合case修改。代码如下图:
--新建字段[等级]
ALTER TABLE [dbo].[成绩表]
ADD [等级] varchar(50)
--修改法,修改字段[等级]
update [dbo].[成绩表]
set [等级]=case
when [成绩]<60 then '不及格'
when [成绩]<75 then '及格'
when [成绩]<90 then '良好'
else '优秀' end
方法2:
新建视图法,新建一个视图,结合case达到效果,新建视图的好处是不破坏源数据表。代码如下图:
create view 数值分组
as
--select 查询语句
select [学生],[成绩],
--新建字段[等级],用case对数值字段进行分组
[等级]=case
when [成绩]<60 then '不及格'
when [成绩]<75 then '及格'
when [成绩]<90 then '良好'
else '优秀' end
from [dbo].[成绩表]
方法3:
这是导入数据库的分组表,见下图,在方法3中需要使用这个辅助表,用join on去匹配此表。
join法,新建一个视图,然后用join on去匹配[等级]字段,关键点是on的条件使用了“大于、小于”。
create view 数值分组2
as
--select 查询语句
select [学生],[成绩],[等级]
--使用join on的大于、小于条件来生成[等级]
from [dbo].[成绩表] left join [dbo].[分组表] on ([成绩]>=[开始值] and [成绩]<[结束值])