MYSQL如何动态(即科目数不确定)的查询出表中的成绩总分,平均分:
会用固定语句查出某些科目的:
select Number,sum(case subject when '数学 ' then Sources
end) as '数学 ',
sum(case subject when '英语 ' then Sources
end) as '英语 ',
sum(case subject when '语文 ' then Sources end) as '语文 ',SUM(Sources) as 总分, AVG(Sources) as 平均分
from test
group by Number;
如果科目不确定的时候该怎么用动态语句查询,高手指点下;
表示这样子的:
ID number subject sources
1 1 语文 60
2 1 数学 70
3 1 英语 75
4 2 语文 55
5 2 数学 53
6 2 英语 75
7 3 语文 80
8 4 数学 0
9 5 英语 91
最后查出的结果是这样子的
number 数学 英语 语文 总分 平均分
1 70 75 60 205 68.3333
2 53 75 55 183 61
3 80 80 80
4 0 0 0
5 91 91 91
mysql用动态语句怎么实现?
高手指点下mysql的动态语句,新手学习中
会用固定语句查出某些科目的:
select Number,sum(case subject when '数学 ' then Sources
end) as '数学 ',
sum(case subject when '英语 ' then Sources
end) as '英语 ',
sum(case subject when '语文 ' then Sources end) as '语文 ',SUM(Sources) as 总分, AVG(Sources) as 平均分
from test
group by Number;
如果科目不确定的时候该怎么用动态语句查询,高手指点下;
表示这样子的:
ID number subject sources
1 1 语文 60
2 1 数学 70
3 1 英语 75
4 2 语文 55
5 2 数学 53
6 2 英语 75
7 3 语文 80
8 4 数学 0
9 5 英语 91
最后查出的结果是这样子的
number 数学 英语 语文 总分 平均分
1 70 75 60 205 68.3333
2 53 75 55 183 61
3 80 80 80
4 0 0 0
5 91 91 91
mysql用动态语句怎么实现?
高手指点下mysql的动态语句,新手学习中
MySQL交叉表
在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx( id int primary key, c1 c...
create table tx(
id int primary key,
c1 char(2),
c2 char(2),
c3 int
);
insert into tx values
(1 ,'A1','B1',9),
(2 ,'A2','B1',7),
(3 ,'A3','B1',4),
(4 ,'A4','B1',2),
(5 ,'A1','B2',2)
当我插入中文(把B1换成 外语)查询的时候查询就出错是什么情况?,是不是C2字段类型的问题?高手帮忙看下:查询语句
SET @EE='';
SELECT @EE:=CONCAT(@EE,'SUM(IF(C2=/'',C2,'/'',',C3,0)) AS ',C2,',') FROM (SELECT DISTINCT C2 FROM TX) A;
SET @QQ=CONCAT('SELECT ifnull(c1,\'total\'),',LEFT(@EE,LENGTH(@EE)-1),' ,SUM(C3) AS TOTAL FROM TX GROUP BY C1 WITH ROLLUP');
PREPARE stmt2 FROM @QQ;
EXECUTE stmt2;