1.
姓名 数学 物理 语文
---------- ----------- ----------- -----------
李四 84 94 74
张三 83 93 74
2.
姓名 课程 分数
---------- ---------- -----------
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
sql server 对于上面两种表分别求成绩表中各个科目大于平均值的人数!好像涉及到行转列了...
我折腾了一晚上没睡觉也没折腾出来... 囧
下午面试可能会问这个问题,我急死了... 求大侠指点啊!!!感激不尽... (┬_┬)
1select '数学',count(*) from table1 where 数学>(select avg(数学) from table1 )
union all
select ‘物理',count(*) from table1 where 物理>(select avg(物理) from table1 )
union all
select ‘语文',count(*) from table1 where 语文>(select avg(语文) from table1 )
SELECT '数学' AS 科目, COUNT(*) AS 数目
FROM TABLE2
WHERE (分数 >
(SELECT SUM(分数)
FROM table2
WHERE 课程 = '数学') /
(SELECT COUNT(*)
FROM table2
WHERE 课程 = '数学')) AND (课程 = '数学')
UNION ALL
SELECT '语文' AS 科目, COUNT(*) AS 数目
FROM TABLE2
WHERE (分数 >
(SELECT SUM(分数)
FROM table2
WHERE 课程 = '语文') /
(SELECT COUNT(*)
FROM table2
WHERE 课程 = '语文')) AND (课程 = '语文')
UNION ALL
SELECT '物理' AS 科目, COUNT(*) AS 数目
FROM TABLE2
WHERE (分数 >
(SELECT SUM(分数)
FROM table2
WHERE 课程 = '物理') /
(SELECT COUNT(*)
FROM table2
WHERE 课程 = '物理')) AND (课程 = '物理')