新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、创建测试表,
成都创新互联公司是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如成都户外休闲椅等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致赞扬。
create table test_stu(id number, u_name varchar2(20), subject varchar2(20));
create table test_subj(id number, subject varchar2(20));
2、插入测试数据
insert into test_stu values(1,'张三','英语');
insert into test_stu values(2,'李四','德语');
insert into test_stu values(3,'王五','日语');
insert into test_stu values(4,'小明','英语');
insert into test_stu values(5,'小狗','法语');
insert into test_subj values(1,'英语');
insert into test_subj values(2,'德语');
insert into test_subj values(3,'日语');
insert into test_subj values(4,'法语');
3、查询表中所有记录数,select t.*, rowid from test_subj t,
4、编写sql,统计test_subj总记录数,及每个科目选修学生数;
select count(distinct t.id) as "小计",
count(case when subject='英语' then 1 end) as "英语",
count(case when subject='德语' then 1 end) as "德语",
count(case when subject='日语' then 1 end) as "日语"
from (select t.*
from test_subj t, test_stu b
where t.subject = b.subject) t
你看看这个吧,sqlserver写法
自己也粘贴一下
创建表数据
create table test
(序号 varchar(2),
班级 varchar(2),
姓名 varchar(10),
语文 int,
数学 int,
英语 int)
insert into test values ('01','b4','张三',23,87,98)
insert into test values ('02','b1','李四',76,87,56)
insert into test values ('03','b2','王五',56,87,67)
insert into test values ('04','b3','赵六',78,87,65)
insert into test values ('05','b2','啊啊',45,68,89)
insert into test values ('06','b6','说说',65,56,45)
insert into test values ('07','b4','等等',90,54,34)
insert into test values ('08','b5','菲菲',89,76,90)
执行
select
case when 班级 is null then '总计' else 班级 end 班级,
case when 姓名 IS null then '小计' else 姓名 end 姓名,
sum(语文) 语文,
sum(数学) 数学,
sum(英语) 英语
from test
group by 班级,姓名 with rollup
结果截图
楼主好,SQL中建立的基本上都是关系型数据库,单纯的查询是不能实现单元格合并以及按组小计的。其实实现图中的功能是需要SSAS来实现的,也就是多维数据库。建立多维数据库后,您图中的功能就可以在数据库中实现了。SSAS的开发工具就是你安装的数据库中除了企业管理器中,另外一个图标,商务智能开发工具。其实是个简单的VS,可视化的开发工具。我当前也正在做相关的工作。其实多维数据库的建立一般不由开发人员做,归属数据分析师或者BI工程师来实现的。开发多维数据库后,可以再集成前端工具,就成了报表系统。有问题可以继续追问。
select case when 数据1=0 then 0 else 数据2/数据1 end from 表名
能看懂吧,数据1是被除数,数据2是除数