navyzhou
create table sales(
sid int identity primary key,
pamount numeric(10,2),
sdate date
);
 
insert into sales values(4000,\'2012-5-14\');
insert into sales values(8000,\'2012-3-14\');
insert into sales values(4200,\'2012-3-26\');
insert into sales values(4200,\'2012-3-26\');
insert into sales values(20000,\'2012-4-14\');
insert into sales values(4200,\'2012-5-12\');
insert into sales values(8400,\'2012-6-14\');
insert into sales values(4000,\'2012-2-18\');
insert into sales values(12000,\'2012-3-14\');
insert into sales values(4200,\'2012-3-12\');
insert into sales values(4200,\'2012-4-12\');
insert into sales values(8600,\'2012-3-12\');
insert into sales values(11000,\'2012-5-12\');
insert into sales values(12000,\'2012-4-14\');
insert into sales values(4800,\'2012-4-18\');
 
 
 
--日报表
select sdate,SUM(pamount) as \'总额\' from tbSales group by sdate;
 
--周报表
select YEAR(sdate) as \'年份\',DATEPART(week,sdate) as \'周次\',SUM(pamount) as \'总额\' from tbSales group by YEAR(sdate),DATENAME(week,sdate);
 
--月报表
select YEAR(sdate) as \'年份\',MONTH(sdate) as \'月份\',SUM(pamount) as \'总额\' from tbSales group by YEAR(sdate),MONTH(sdate);
 
--季度报表
select y as \'年份\',SUM(case when m between 1 and 3 then total else 0 end) as \'一季度\',
SUM(case when m between 4 and 6 then total else 0 end) as \'二季度\',
SUM(case when m between 7 and 9 then total else 0 end) as \'三季度\',
SUM(case when m between 10 and 12 then total else 0 end) as \'四季度\' from(
select YEAR(sdate) as y,MONTH(sdate) as m,SUM(pamount) as total from tbSales group by YEAR(sdate),MONTH(sdate) 
) oo group by y;
 
 
--年报表
select YEAR(sdate) as \'年分\',SUM(pamount) as \'总额\' from tbSales group by YEAR(sdate);
 
 
 
use master;
go
 
if exists(select * from sysdatabases where name=\'test\')
   drop database test;
go
   
create database test;
go
 
use test;
 
if exists(select * from sys.objects where name=\'stuinfo\')
   drop table stuifo;
go
 
create table stuinfo(--学生
   stuid int primary key identity(1,1),
   sname nvarchar(50) unique,
   sage int not null 
                  constraint CK_age check(sage>=18 and sage<=30),
   saddress nvarchar(50),
   sex varchar(2) default \'男\'
);
go
   
if exists(select * from sys.objects where name=\'course\')
   drop table course;
go
  
create table course(--科目
  cid int primary key identity(1,1),
  cname nvarchar(50)      
);
go  
   
if exists(select * from sys.objects where name=\'score\')
   drop table score;
go
   
create table score(--成绩
   scoreid int primary key identity(1,1),
   studentid int constraint FK_studentid
                          foreign key references stuinfo(stuid),
   courseid int constraint FK_courseid
                          foreign key references course(cid),
   score int
);
go
   
insert into course values(\'j2se精讲\');
insert into course values(\'sql server\');
insert into course values(\'html网页设计\');
insert into course values(\'软件测试基础\');
   
insert into stuinfo values(\'张果老\',22,null,\'男\');
insert into stuinfo values(\'李豹\',22,null,\'男\');
insert into stuinfo values(\'老胡\',22,\'北京\',\'男\');
insert into stuinfo values(\'老江\',24,\'湖南\',\'男\');
insert into stuinfo values(\'张无忌\',26,\'衡阳\',\'男\');
insert into stuinfo values(\'二师兄\',28,\'长沙\',\'男\');
insert into stuinfo values(\'凤姐\',24,\'上海\',\'女\');
insert into stuinfo values(\'元芳\',28,\'上海\',\'男\');
insert into stuinfo values(\'离歌\',23,\'上海\',\'男\');
insert into stuinfo values(\'八戒\',24,\'上海\',\'男\');
 
 
 
insert into score values(5,1,95);
insert into score values(5,2,58);
insert into score values(5,3,56);
insert into score values(5,4,81);
insert into score values(5,2,80);
 
insert into score values(1,1,78);
insert into score values(1,3,81);
insert into score values(1,4,92);
 
 
insert into score values(2,3,30);
insert into score values(2,3,78);
insert into score values(3,3,66);
insert into score values(4,3,66);
insert into score values(6,3,78);
insert into score values(7,3,76);
insert into score values(8,2,81);
insert into score values(9,2,90);
insert into score values(10,3,42);
 
insert into score values(2,1,80);
insert into score values(4,2,78);
insert into score values(8,3,69);
insert into score values(8,1,69);
 
 
--按成绩分科分段统计
select * from score
select cname,sum(case when score between 85 and 100 then 1 else 0 end) as [100 - 85],
sum(case when score between 70 and 85 then 1 else 0 end) as [85 - 70],
sum(case when score between 60 and 70 then 1 else 0 end) as [70 - 60],
sum(case when score < 60 then 1 else 0 end) as [60 -0] from score,course where courseid=cid group by cname;  --没有考虑补考的
 
 
--去掉补考的
select cname,sum(case when score between 85 and 100 then 1 else 0 end) as [100 - 85],
sum(case when score between 70 and 85 then 1 else 0 end) as [85 - 70],
sum(case when score between 60 and 70 then 1 else 0 end) as [70 - 60],
sum(case when score < 60 then 1 else 0 end) as [60 -0] from (
select studentid,courseid,cid,cname,max(score) as score from
score,course where courseid=cid group by studentid,courseid,cid,cname) oo where courseid=cid group by cname;

分类:

技术点:

相关文章:

  • 2021-12-04
  • 2021-10-28
  • 2022-12-23
  • 2021-12-04
  • 2022-12-23
  • 2021-10-28
  • 2022-12-23
猜你喜欢
  • 2021-10-17
  • 2021-05-28
  • 2021-12-04
  • 2021-11-20
  • 2021-12-04
  • 2021-12-04
相关资源
相似解决方案