22,207
社区成员
发帖
与我相关
我的任务
分享
create table tbscore
(
schoolname varchar(20) ,
stuname varchar(20),
coursename varchar(10),
score int,
testname varchar(60),
termname varchar(10)
)
insert into tbscore
select '金华四中','s1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','数学',30,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s1','语文',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','语文',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','语文',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','语文',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','语文',32,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','数学',40,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','语文',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','语文',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','语文',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','语文',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','语文',42,'2009年6月份婺城区初一年级各学校摸底考试','初一'
/*
----------结果格式是这个样子的,结果乱写的,不正确-------------------
学校 总人数 总分后20%人数 总分比率 数学后20%人数 数学比率 语文后20%人数 语文比率
金华四中 5 1 20% 2 40% 3 60%
金华五中 5 1 20% 5 100% 4 80%
注:
1.总人数:各学校总人数
2.总分后20%人数:这次考试所有学校的学生,总分最低的后20%,每个学校分别占几个人。(总分,不是单科)
3.总分比率:该学校总分后20%所占人数/该学校总人数。
4.数学后20%人数:这次考试所有学校的学生,数学最低的后20%,每个学校分别占几个人。(单科)
5.数学比率:该学校数学的后20%所占人数/该学校总人数。
5.语文:同上。
求大家帮忙,不明白之处请指出,在线等。
IF OBJECT_ID('TBSCORE') IS NOT NULL DROP TABLE TBSCORE
GO
create table tbscore
(
schoolname varchar(20) ,
stuname varchar(20),
coursename varchar(10),
score int,
testname varchar(60),
termname varchar(10)
)
insert into tbscore
select '金华四中','s1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','数学',30,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s1','语文',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','语文',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','语文',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','语文',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','语文',32,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','数学',40,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','语文',19,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','语文',18,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','语文',17,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','语文',16,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','语文',42,'2009年6月份婺城区初一年级各学校摸底考试','初一'
GO
;WITH MU AS (
SELECT SCHOOLNAME,STUNAME
,SUM(SCORE) AS TOTAL
,SUM(CASE WHEN coursename='数学' THEN SCORE ELSE 0 END) AS STOTAL
,SUM(CASE WHEN coursename='语文' THEN SCORE ELSE 0 END) AS YTOTAL
FROM TBSCORE
GROUP BY SCHOOLNAME,STUNAME
)
SELECT T1.SCHOOLNAME AS [学校],T1.TOTAL AS [总人数]
,ISNULL(T2.TOTAL,0) AS [总分后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T2.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [总分比率]
,ISNULL(T3.TOTAL,0) AS [数学后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T3.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [数学比率]
,ISNULL(T4.TOTAL,0) AS [语文后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T4.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [语文比率]
FROM (
SELECT SCHOOLNAME,COUNT(DISTINCT stuname) AS TOTAL
FROM TBSCORE
GROUP BY SCHOOLNAME
) T1
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY TOTAL ASC
) T
GROUP BY SCHOOLNAME
) T2 ON T1.SCHOOLNAME=T2.SCHOOLNAME
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY STOTAL ASC
) T
GROUP BY SCHOOLNAME
) T3 ON T1.SCHOOLNAME=T3.SCHOOLNAME
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY YTOTAL ASC
) T
GROUP BY SCHOOLNAME
) T4 ON T1.SCHOOLNAME=T4.SCHOOLNAME
/*
学校 总人数 总分后20%人数 总分比率 数学后20%人数 数学比率 语文后20%人数 语文比率
-------------------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
金华四中 5 1 20% 1 20% 0 0%
金华五中 5 1 20% 1 20% 2 40%
*/
IF OBJECT_ID('TBSCORE') IS NOT NULL DROP TABLE TBSCORE
GO
create table tbscore
(
schoolname varchar(20) ,
stuname varchar(20),
coursename varchar(10),
score int,
testname varchar(60),
termname varchar(10)
)
insert into tbscore
select '金华四中','s1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','数学',30,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s1','语文',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','语文',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','语文',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','语文',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','语文',32,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','数学',40,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','语文',19,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','语文',18,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','语文',17,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','语文',16,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','语文',42,'2009年6月份婺城区初一年级各学校摸底考试','初一'
GO
;WITH MU AS (
SELECT SCHOOLNAME,STUNAME
,SUM(SCORE) AS TOTAL
,SUM(CASE WHEN coursename='数学' THEN SCORE ELSE 0 END) AS STOTAL
,SUM(CASE WHEN coursename='语文' THEN SCORE ELSE 0 END) AS YTOTAL
FROM TBSCORE
GROUP BY SCHOOLNAME,STUNAME
)
SELECT T1.SCHOOLNAME AS [学校],T1.TOTAL AS [总人数]
,ISNULL(T2.TOTAL,0) AS [总分后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T2.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [总分比率]
,ISNULL(T3.TOTAL,0) AS [数学后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T3.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [数学比率]
,ISNULL(T4.TOTAL,0) AS [语文后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T4.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [语文比率]
FROM (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL
FROM TBSCORE
GROUP BY SCHOOLNAME
) T1
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY TOTAL ASC
) T
GROUP BY SCHOOLNAME
) T2 ON T1.SCHOOLNAME=T2.SCHOOLNAME
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY STOTAL ASC
) T
GROUP BY SCHOOLNAME
) T3 ON T1.SCHOOLNAME=T3.SCHOOLNAME
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY YTOTAL ASC
) T
GROUP BY SCHOOLNAME
) T4 ON T1.SCHOOLNAME=T4.SCHOOLNAME
/*
学校 总人数 总分后20%人数 总分比率 数学后20%人数 数学比率 语文后20%人数 语文比率
-------------------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
金华四中 10 1 10% 1 10% 0 0%
金华五中 10 1 10% 1 10% 2 20%
*/
IF OBJECT_ID('TBSCORE') IS NOT NULL DROP TABLE TBSCORE
GO
create table tbscore
(
schoolname varchar(20) ,
stuname varchar(20),
coursename varchar(10),
score int,
testname varchar(60),
termname varchar(10)
)
insert into tbscore
select '金华四中','s1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','数学',30,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s1','语文',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s2','语文',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s3','语文',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s4','语文',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华四中','s5','语文',32,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','数学',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','数学',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','数学',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','数学',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','数学',40,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w1','语文',99,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w2','语文',98,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w3','语文',97,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w4','语文',96,'2009年6月份婺城区初一年级各学校摸底考试','初一' union
select '金华五中','w5','语文',42,'2009年6月份婺城区初一年级各学校摸底考试','初一'
GO
;WITH MU AS (
SELECT SCHOOLNAME,STUNAME
,SUM(SCORE) AS TOTAL
,SUM(CASE WHEN coursename='数学' THEN SCORE ELSE 0 END) AS STOTAL
,SUM(CASE WHEN coursename='语文' THEN SCORE ELSE 0 END) AS YTOTAL
FROM TBSCORE
GROUP BY SCHOOLNAME,STUNAME
)
SELECT T1.SCHOOLNAME AS [学校],T1.TOTAL AS [总人数]
,ISNULL(T2.TOTAL,0) AS [总分后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T2.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [总分比率]
,ISNULL(T3.TOTAL,0) AS [数学后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T3.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [数学比率]
,ISNULL(T4.TOTAL,0) AS [语文后20%人数],CONVERT(VARCHAR(10),CONVERT(NUMERIC(19,0),ISNULL(T4.TOTAL,0)*100.0/T1.TOTAL))+'%' AS [语文比率]
FROM (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL
FROM TBSCORE
GROUP BY SCHOOLNAME
) T1
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY TOTAL ASC
) T
GROUP BY SCHOOLNAME
) T2 ON T1.SCHOOLNAME=T2.SCHOOLNAME
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY STOTAL ASC
) T
GROUP BY SCHOOLNAME
) T3 ON T1.SCHOOLNAME=T3.SCHOOLNAME
LEFT JOIN (
SELECT SCHOOLNAME,COUNT(1) AS TOTAL FROM (
SELECT TOP 20 PERCENT WITH TIES SCHOOLNAME
FROM MU
ORDER BY YTOTAL ASC
) T
GROUP BY SCHOOLNAME
) T4 ON T1.SCHOOLNAME=T4.SCHOOLNAME
/*
学校 总人数 总分后20%人数 总分比率 数学后20%人数 数学比率 语文后20%人数 语文比率
-------------------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
金华四中 10 1 10% 1 10% 1 10%
金华五中 10 1 10% 1 10% 1 10%
*/
----------结果格式是这个样子的,结果乱写的,不正确-------------------
学校 总人数 总分后20%人数 总分比率 数学后20%人数 数学比率 语文后20%人数 语文比率
金华四中 100 10 10% 50 50% 20 20%
金华五中 200 50 25% 10 5% 40 20%