原始表数据:
t_stu:
SID SUBJECT SCORE
1 数学 99
1 英语 68
1 法律 79
2 数学 92
2 英语 72
2 法律 96
t_s
SID SNAME
1 张三
2 李四
--首先产生3个计算列,数学,英语,法律
SELECT * FROM t_s;
SELECT sid,
(CASE subject WHEN '数学' THEN score END)AS math,
(CASE subject WHEN '英语' THEN score END)AS english,
(CASE subject WHEN '法律' THEN score END)AS law
FROM t_stu;
SELECT * FROM t_stu;
--列出每个学生的各科成绩
--个人理解这里MIN,因为这里每个学生的科目只有一科,计算不影响查询的单科的成绩,配合分组函数
--这里用sum,max,min来计算都行
SELECT * FROM t_s;
SELECT sid,
MIN(CASE subject WHEN '数学' THEN score END)AS math,
MIN(CASE subject WHEN '英语' THEN score END)AS english,
MIN(CASE subject WHEN '法律' THEN score END)AS law
FROM t_stu
GROUP BY sid;
--加上每个学生总成绩的计算列,计算每个学生的科目总成绩
SELECT sid,
SUM(CASE subject WHEN '数学' THEN score END)AS math,
SUM(CASE subject WHEN '英语' THEN score END)AS english,
SUM(CASE subject WHEN '法律' THEN score END)AS law,
SUM (score) AS 总分数
FROM t_stu
GROUP BY sid;
--查询每个的姓名,各科成绩以及每个学生的总成绩,(加入t_s 中SNAME字段)
SELECT s1.sid,s2.sname,
MIN(CASE subject WHEN '数学' THEN score END)AS math,
MIN(CASE subject WHEN '英语' THEN score END)AS english,
MIN(CASE subject WHEN '法律' THEN score END)AS law,
SUM(score)AS 总分数
FROM t_stu s1
JOIN t_s s2
ON s1.sid=s2.sid
GROUP BY s1.sid,s2.sname;
--查询每个的姓名,各科成绩以及每个学生的总成绩以及科目总成绩
SELECT s1.sid,s2.sname,
MIN(CASE subject WHEN '数学' THEN score END)AS math,
MIN(CASE subject WHEN '英语' THEN score END)AS english,
MIN(CASE subject WHEN '法律' THEN score END)AS law,
SUM(score)AS 总分数
FROM t_stu s1
JOIN t_s s2
ON s1.sid=s2.sid
GROUP BY s1.sid,s2.sname
--union后面的表数据就不能顺便用min,或者MAX来代替,以为是计算每个科目总成绩(纵向计算)
UNION ALL
SELECT NULL,NULL,
SUM(CASE subject WHEN '数学' THEN score END)AS math,
SUM(CASE subject WHEN '英语' THEN score END)AS english,
SUM(CASE subject WHEN '法律' THEN score END)AS law,
SUM(score)AS 总分数
FROM t_stu s1
JOIN t_s s2
ON s1.sid=s2.sid;
------
------
分享到:
相关推荐
交叉报表是水晶报表中的一个重要特性,它允许用户以行列交叉的方式展示数据,便于进行多维度的数据分析和比较。在这个“水晶报表交叉报表设计”主题中,我们将深入探讨如何利用水晶报表来创建、定制和优化交叉报表。...
**交叉表**是一种特殊类型的报表布局,主要用于展示多个维度上的数据对比分析。它通过将数据按照行和列的不同维度进行组织,形成一个二维表格,使得用户能够直观地观察不同维度之间的数据变化趋势。 #### 二、交叉...
【ReportMachine 交叉报表 学生成绩表】是一款专业用于数据可视化和分析的工具,尤其在教育领域中,它能够高效地展示和解读学生的学习成绩。交叉报表是一种强大的数据分析技术,通过行列交叉的方式,可以清晰地揭示...
交叉报表的应用非常广泛,例如可以用于创建交叉报表、数据分析报表、统计报表等等。通过使用iReport交叉报表,可以轻松地创建复杂的报表,并且可以与 JasperReports 集成使用。 结论 iReport交叉报表是iReport ...
在这个“CrossTab_demo百灵报表(BIRT)交叉表(演示二)”的压缩包中,我们主要探讨的是如何使用BIRT来创建和操作交叉表,这是一种强大的数据汇总和分析工具。 交叉表,又称透视表,是数据处理和分析中的常用手段。它...
交叉报表,也被称为透视表或交叉表,是一种能够同时展示多个维度数据的报表形式。在交叉报表中,行和列的交汇点通常用于计算汇总值,例如总计、平均值或百分比。多层表头则进一步增强了这种表现力,它允许在行或列上...
交叉报表,也称为透视表,允许数据以行列互换的方式显示,便于分析和比较。在用户管理和权限分配的场景下,可能通过交叉报表来直观地展示用户的角色分配,或者角色拥有的各种权限。例如,列可以代表用户,行可以代表...
交叉报表(Crosstab)是数据分析中常用的一种工具,它可以将数据按行和列的方式进行交叉展示,便于用户更直观地理解数据间的关联和对比。Ireport是一款强大的开源报表设计工具,它是JasperReport库的一部分,专门...
数据分层汇总交叉报表是数据分析领域中常见的需求,主要用于管理层获取多维度的业务洞察。在管理系统中,这种报表通常需要处理复杂的数据结构,以便展示不同层次的汇总信息。本文将探讨如何利用SQL语句实现这样的...
交叉报表在数据分析领域具有重要意义,它能帮助用户从多角度、多层次分析数据,提供丰富的透视表功能,以更直观的方式展示复杂的数据关系。 【描述】:“UAP培训_890(交叉报表).rar”描述简单明了,表明这是一个...
Cognos 列表和交叉表锁定表头功能是报表页面中的一种重要功能,能够提高报表的可读性和用户体验,提高报表的整体质量。 知识点: * Cognos BI 是一种商业智能软件,提供了报表、分析和数据挖掘等功能。 * HTML ...
交叉报表是一种特殊的报表格式,主要用于展示数据的行列交叉分析,它可以清晰地呈现多维度的数据集。在IT领域,尤其是在数据分析和报表设计时,交叉报表是非常重要的工具。此压缩包文件包含有关“交叉表示例”的示例...
交叉表是一种数据汇总工具,它能以行列形式展示数据,并进行统计分析,常用于数据分析和报表制作。 在BIRT中,动态创建交叉表主要涉及以下几个知识点: 1. **BIRT API**:BIRT API是BIRT的核心,允许开发者通过...
在商业智能和数据分析领域,交叉报表尤其受欢迎,因为它们能够有效地处理多维数据。 "asp.net 交叉报表案例"可能涉及到以下几个关键知识点: 1. **数据源**:ASP.NET报表通常与数据库如SQL Server、Oracle或MySQL...
### iReport交叉报表详解 #### 一、iReport简介 iReport是一款强大的开源报表设计工具,主要用于设计和创建复杂的报表。它支持多种数据源(如JDBC、XML、CSV等),并能生成各种格式的输出文件(PDF、HTML、Excel等...
本文探讨了机器学习和交叉表分析在新冠肺炎新闻情绪分析中的应用,旨在支持主流媒体更好地进行舆情治理。情绪分析在现代社会中扮演着重要角色,尤其是在疫情这样的公共卫生事件中,公众的情绪反应直接影响舆论走向和...
交叉报表,又称交叉表或透视表,是一种数据分析工具,能够帮助用户通过行列互换、聚合数据来洞察数据模式。 标题“用BIRT设计交叉报表的详细例子”意味着我们将探讨如何使用BIRT工具来创建一个复杂的交叉报表,并...
在编程领域,尤其是在使用C#进行数据处理时,动态交叉表查询是一种常用的技术,它能够帮助我们以矩阵或网格的形式展示数据,使...无论是在报表开发、数据分析还是BI应用中,熟练运用动态交叉表都能让你的工作更加高效。
### 基于动态交叉表的Web多维分析系统设计与实现 #### 一、引言 在现代商业环境中,企业越来越依赖于大数据分析来驱动决策制定。在这些场景下,传统的在线分析处理(OLAP)工具虽然强大,但在基于Web的应用程序中...
4. **统计检验**:在分析交叉表时,可以考虑进行卡方检验等统计测试,以判断变量间的关系是否具有统计学意义。 通过上述内容的介绍,我们可以了解到交叉表不仅是一种强大的数据分析工具,也是一种直观的数据展示...