首页 新闻 会员 周边 捐助

【急求解答!】用sql语句求成绩表中各个科目大于平均值的人数

0
[已关闭问题] 关闭于 2011-09-26 14:25

1.
姓名       数学        物理        语文
---------- ----------- ----------- -----------
李四        84          94          74
张三        83          93          74

 2.
姓名       课程       分数
---------- ---------- -----------
张三       语文        74
张三       数学        83
张三       物理        93
李四       语文        74
李四       数学        84
李四       物理        94

sql server 对于上面两种表分别求成绩表中各个科目大于平均值的人数!好像涉及到行转列了...

我折腾了一晚上没睡觉也没折腾出来... 囧
下午面试可能会问这个问题,我急死了... 求大侠指点啊!!!感激不尽... (┬_┬)

我爱阳光的主页 我爱阳光 | 菜鸟二级 | 园豆:204
提问于:2011-04-13 07:01
< >
分享
所有回答(2)
0
1
select '数学',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 )

死白的man | 园豆:2135 (老鸟四级) | 2011-04-13 09:12
0

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 (课程 = '物理')
以上表二的操作

VanJames2010 | 园豆:321 (菜鸟二级) | 2011-04-13 22:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册