关于班级人数的查询的sql语句

mp866 2010-10-06 09:03:10
表结构

班级名 , 上课时间,人数
1 , 2010-10-5 ,4
1 , 2010-9-5, 5
1 , 2010-10-6,6
我想查的结果是:
班级名,人数,和上次课人数的差

查询班级这次课的记录时候,想把这次的人数与上次课人数的差也查询出来sql怎么写啊?
...全文
624 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hovy_yang 2010-10-06
  • 打赏
  • 举报
回复
1楼正解

if object_id('tb') is not null drop table tb
-- 创建数据表
create table tb
(
班级名 int,
上课时间 datetime,
人数 int
)
go
--插入测试数据
insert into tb select 1,'2010-10-5',4
union all select 1,'2010-9-5',5
union all select 1,'2010-10-6',6
go
--代码实现

select 班级名,人数
,和上次课人数的差=人数-isnull((
select top 1 人数
from tb
where 班级名=t.班级名 and 上课时间<t.上课时间
order by 上课时间 desc),0)
from tb t
order by 上课时间 desc

班级名 人数 和上次课人数的差
---------------------------------
1 6 2
1 4 -1
1 5 5
yubofighting 2010-10-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happycell188 的回复:]
SQL code
use test
go
if object_id('test.dbo.tb') is not null drop table tb
-- 创建数据表
create table tb
(
班级名 int,
上课时间 datetime,
人数 int
)
go
--插入测试数据
insert into tb select 1,'2010-10-5',4
u……
[/Quote]

此乃正解!
siegebaoniu 2010-10-06
  • 打赏
  • 举报
回复
顶一楼!
siegebaoniu 2010-10-06
  • 打赏
  • 举报
回复
/*
1 1 2010-09-05 00:00:00.000 5 5
2 1 2010-10-05 00:00:00.000 4 -1
3 1 2010-10-06 00:00:00.000 6 2
*/
siegebaoniu 2010-10-06
  • 打赏
  • 举报
回复
/*if object_id('S') is not null drop table S
create table S(classid int,classtime datetime,num int)
insert into S
select 1,'2010-10-5',4 union all
select 1,'2010-9-5',5 union all
select 1,'2010-10-6',6*/

with t as (select idd=row_number() over (order by classtime),* from S)
select t.*,和上次课人数的差=t.num-isnull(a.num,0) from t left join t a on t.idd=a.idd+1
喜-喜 2010-10-06
  • 打赏
  • 举报
回复
use test
go
if object_id('test.dbo.tb') is not null drop table tb
-- 创建数据表
create table tb
(
班级名 int,
上课时间 datetime,
人数 int
)
go
--插入测试数据
insert into tb select 1,'2010-10-5',4
union all select 1,'2010-9-5',5
union all select 1,'2010-10-6',6
go
--代码实现

select 班级名,人数
,和上次课人数的差=人数-isnull((
select top 1 人数
from tb
where 班级名=t.班级名 and 上课时间<t.上课时间
order by 上课时间 desc),0)
from tb t

/*测试结果

班级名 人数 和上次课人数的差
---------------------------------
1 4 -1
1 5 5
1 6 2

(3 行受影响)
*/
1、可以设置,修改,增加学期信息,例如:2007年上学期,但是您必须设置一个默认学期为当前学期; 2、可以设置,修改,增加院系信息,如果是小学中学和高中不分院系,可以直接默认为本部,这样班级都是隶属于一个院系(本部)的。 3、可以设置,修改,增加教师信息,也可以批量增加教师信息,批量增加的教师姓名都是教师编号,可以教师登录后台后自己修改姓名等信息 4、可以设置,修改,增加班级信息,但是班级必须隶属于某个院系,有班级后才可以设置学生和课程。 5、可以设置,修改,增加学生信息,也可以批量增加学生信息,批量增加的学生姓名都是学生编号,可以学生登录后台后自己修改姓名等信息,学生增加的时候必须选择相关的班级。 6、可以设置,修改,增加课程信息,包括课程的开课教师,开课课时,开课班级等信息,此功能能配合课程表生成教师和班级课程表。 7、登录日志可以查看教师,学生,管理员的登录情况。 8、数据维护可以备份数据库,也可以直接操作SQL语句(不建议使用),这样数据可以更容易备份,系统更安全。 9、学生可以前台查询自己本学期的课程的成绩信息; 10、可以自动计算一个班级的所有学生成绩的整体排名和名次信息; 11、提供成绩的快速输入功能,批量给成绩,提供成绩的计算规则设置; 例如:(平时成绩*10%+作业成绩*10%+期中成绩*20%+期末成绩*60%=总分) 12、教师可以通过成绩排序来排布本课程的学生成绩的高低名次 13、提供成绩分析功能,可以查看某个课程成绩的分数分配比例 例如:开课人数30人 分析时间 2008-7-28 4:04:25 总分 2037 分 平均分 67.9 分 最高分 85 分 最低分 35 分 均分以上人数 29 人 均分以下人数 1 人 14、其它功能用户可以考用户手册; 15、教师可以查看本学期开设的课程,通过成绩管理功能进入学生成绩的录入功能; 16、教师可以通过成绩分析功能,分析课程的优秀,及格等比例的信息 17、教师还可以通过成绩汇总功能,对一个班级开设的全部课程进行总体的分析,计算全体课程的总分,名次等信息。 不在需要传统的计算器来完成 18、可以通过导出到EXCEL功能导出数据到您的机器,通过EXCEL来打印成绩数据,管理,数据保存更方便。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧