一个较难的sql
表 学生补课每日分数记录 一个同学只补课一门
日期 科目 科目排名 姓名 分数
2012/4/15 语文 1 毛小洋 90
2012/4/15 数学 1 王朱朱 94
2012/4/15 英语 1 朱曾鞥 93
2012/4/15 语文 2 小米 87
2012/4/15 数学 2 小鱼 86
2012/4/15 英语 2 小刘 89
2012/4/15 语文 3 啊毛 81
2012/4/15 数学 3 啊严 82
2012/4/15 英语 3 阿里 83
2012/4/16 语文 1 小米 98
2012/4/16 数学 1 王朱朱 91
2012/4/16 英语 1 朱曾鞥 96
2012/4/16 语文 2 毛小洋 84
2012/4/16 数学 2 啊严 88
2012/4/16 英语 2 阿里 86
2012/4/16 语文 3 啊毛 80
2012/4/16 数学 3 小鱼 80
2012/4/16 英语 3 小刘 82
2102/4/17 .. .. .. ..
.. .. .. .. ..
我想查出的视图1 日期2012/4/16
排名 姓名 语文分数 进步分数 排名 姓名 数学分数 进步分数 排名 姓名 英语分数 进步分数
1 小米 98 11 1 王朱朱 91 -3 1 朱曾鞥 96 3
2 毛小洋 84 -6 2 啊严 88 6 2 阿里 86 3
3 啊毛 80 -1 3 小鱼 80 -6 3 小刘 82 -7
.. .. .. .. .. .. .. .. .. .. .. ..
进步分数就=今天的分数-昨天的分数
我想查出的视图2 日期2012/4/16
排名 姓名 语文分数 进步分数 排名 姓名 数学分数 进步分数 排名 姓名 英语分数 进步分数
1 小米 98 11 1 王朱朱 91 -3 1 朱曾鞥 96 3
2 毛小洋 84 -6 2 啊严 88 6 2 阿里 86 3
3 啊毛 80 -1 3 小鱼 80 -6 3 小刘 82 -7
.. .. .. .. .. .. .. .. .. .. .. ..
合计: 合计: 合计:
字段排列还是按照上面查询,不同之处是加上合计项
------解决方案--------------------
不想具体回复了,用到几个东西:
1、行列转换
2、group by rollup(...)
3、总计部分需要用grouping,将NULL值转换为总计字样。