做一个成绩分析,大家给点建议,来者有分!!

clow 2005-07-22 05:02:14
数据库表各属性列:
县市 民族....成绩1 成绩2 成绩3...

要求:
按县市查出各科成绩各分数段人数和所占的比率,如下:
语文:

市    60以下 60~69 70~79 80~89 90以上
  人数
  比率
.
.
.





对每一科目,我打算先把各个分数段按市算出人数,做成一个表,再把各个表合起来做成总表,然后比率也就好算了.大家觉得这样可行吗?

对于这一方案,问个核心的问题:怎样把多个表合成一个表?
请各位熟悉SQL语句的GGJJ给帮帮忙?谢谢了!

...全文
156 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
clow 2005-09-13
  • 打赏
  • 举报
回复
好久不来CSDN了,本来早就该结帖了。真对不住各位!
clow 2005-07-28
  • 打赏
  • 举报
回复
十三豆是个很热心的人哦,我已经得到他不少的帮助了.
谢谢各位捧场!
seagullflying 2005-07-27
  • 打赏
  • 举报
回复
十三豆好厉害!偶像啊!!
十豆三 2005-07-23
  • 打赏
  • 举报
回复
设表名为CHENGJI


SELECT COUNT(*) AS 总人数 FROM CHENGJI INTO TABLE TMP0
LNSUMYS=总人数
SELECT 县市,科目,count(成绩) as 人数60以下,ALLTRIM(STR((count(成绩)/LNSUMYS)*100,5,2))+'%' AS 比率 FROM CHENGJI where 成绩<60 GROUP BY 1,2 INTO TABLE TMP1

SELECT 县市,科目,count(成绩) as 人数60-69,ALLTRIM(STR((count(成绩)/LNSUMYS)*100,5,2))+'%' AS 比率 FROM CHENGJI where 69>=成绩 and 成绩>=60 GROUP BY 1,2 INTO TABLE TMP2

SELECT 县市,科目,count(成绩) as 人数70-79,ALLTRIM(STR((count(成绩)/LNSUMYS)*100,5,2))+'%' AS 比率 FROM CHENGJI where 79>=成绩 and 成绩>=70GROUP BY 1,2 INTO TABLE TMP3

SELECT 县市,科目,count(成绩) as 人数80-89,ALLTRIM(STR((count(成绩)/LNSUMYS)*100,5,2))+'%' AS 比率 FROM CHENGJI where 89>=成绩 and 成绩>=80 GROUP BY 1,2 INTO TABLE TMP4

SELECT 县市,科目,count(成绩) as 人数90以上,ALLTRIM(STR((count(成绩)/LNSUMYS)*100,5,2))+'%' AS 比率 FROM CHENGJI where 成绩>=90 GROUP BY 1,2 INTO TABLE TMP5

CREAT TABLE 总表 (县市 C(20),科目 C(20),人数60以下 I,人数60-69 I,人数70-79 I,人数80-89 I,人数90以上 I,比率 C(10),总人数 I)
SELECT 总表
APPEND FROM TMP1
APPEND FROM TMP2
APPEND FROM TMP3
APPEND FROM TMP4
APPEND FROM TMP5
REPLACE ALL 总人数 WITH LNSUMYS
BROWSE &&看一下吧,这次满足你的要求了吧。
clow 2005-07-23
  • 打赏
  • 举报
回复
已经试过了,结果是出来了,但还没完全合我的思路.
我是想把每个分数段做成列,有多少个分数段就是多少个列:

县市 60以下 60~69 70~79 80~89 90以上

但这样做就没办法列出比率了,考虑再另外用excel来算.大家有没有更好的建议呢?

itzhiren 2005-07-23
  • 打赏
  • 举报
回复
十豆三 好厉害,我要好好学习,论坛里面有你这样的好版主,我对VFP又有了学习的信心
十豆三 2005-07-23
  • 打赏
  • 举报
回复

设表名为CHENGJI


SELECT COUNT(*) AS 总人数 FROM CHENGJI INTO TABLE TMP_0
SELECT 县市,COUNT(*) AS 本县市人数 FROM CHENGJI INTO TABLE TMP_1 group by 1

SELECT 县市,科目,count(成绩) as 人数60以下 FROM CHENGJI where 成绩<60 GROUP BY 1,2 INTO TABLE TMP1

SELECT 县市,科目,count(成绩) as 人数60-69 FROM CHENGJI where 69>=成绩 and 成绩>=60 GROUP BY 1,2 INTO TABLE TMP2

SELECT 县市,科目,count(成绩) as 人数70-79 FROM CHENGJI where 79>=成绩 and 成绩>=70GROUP BY 1,2 INTO TABLE TMP3

SELECT 县市,科目,count(成绩) as 人数80-89 FROM CHENGJI where 89>=成绩 and 成绩>=80 GROUP BY 1,2 INTO TABLE TMP4

SELECT 县市,科目,count(成绩) as 人数90以上 FROM CHENGJI where 成绩>=90 GROUP BY 1,2 INTO TABLE TMP5

CREAT TABLE 总表 (县市 C(20),科目 C(20),人数60以下 I,人数60-69 I,人数70-79 I,人数80-89 I,人数90以上 I,本县市人数 I,本县市比率 C(10),总人数 I,总比率 C(10),)

SELECT 总表
APPEND FROM TMP1
APPEND FROM TMP2
APPEND FROM TMP3
APPEND FROM TMP4
APPEND FROM TMP5
REPLACE ALL 总人数 WITH TMP_0.总人数
SELECT TMP_1
SCAN
UPDATE 总表 SET 总表.本县市人数=TMP_1.本县市人数 WHERE ALLTRIM(总表.县市)==ALLTRIM(TMP_1.县市)
ENDSCAN
SELECT 总表
REPLACE ALL 本县市比率 WITH ALLTRIM(STR(人数60以下/本县市人数)*100,5,2))+'%' FOR 人数60以下>0
REPLACE ALL 本县市比率 WITH ALLTRIM(STR(人数60-69/本县市人数)*100,5,2))+'%' FOR 人数60-69>0
REPLACE ALL 本县市比率 WITH ALLTRIM(STR(人数70-79/本县市人数)*100,5,2))+'%' FOR 人数70-79>0
REPLACE ALL 本县市比率 WITH ALLTRIM(STR(人数80-89/本县市人数)*100,5,2))+'%' FOR 人数80-89>0
REPLACE ALL 本县市比率 WITH ALLTRIM(STR(人数90以上/本县市人数)*100,5,2))+'%' FOR 人数90以上>0

REPLACE ALL 总比率 WITH ALLTRIM(STR(人数60以下/总人数)*100,5,2))+'%' FOR 人数60以下>0
REPLACE ALL 总比率 WITH ALLTRIM(STR(人数60-69/总人数)*100,5,2))+'%' FOR 人数60-69>0
REPLACE ALL 总比率 WITH ALLTRIM(STR(人数70-79/总人数)*100,5,2))+'%' FOR 人数70-79>0
REPLACE ALL 总比率 WITH ALLTRIM(STR(人数80-89/总人数)*100,5,2))+'%' FOR 人数80-89>0
REPLACE ALL 总比率 WITH ALLTRIM(STR(人数90以上/总人数)*100,5,2))+'%' FOR 人数90以上>0

BROWSE &&看一下吧,我这没有数据,你试一下吧
clow 2005-07-23
  • 打赏
  • 举报
回复
可能还有好多问题要问,希望大家耐心指点.
为方便联系,请人心的GGJJ加个Q:65870329
谢谢!
clow 2005-07-23
  • 打赏
  • 举报
回复
谢谢了!
还有个地方:
就是上面第一次算比率的时候,要是算它在本县市中的比率(各个县总人数不同),是不是要把分母(也就是各县市的总人数)放入一个数组,然后再算?这样可行吗?具体怎么操作?
clow 2005-07-22
  • 打赏
  • 举报
回复
谢谢楼上两位
小弟试试,要是发现不明白的再请教.
十豆三 2005-07-22
  • 打赏
  • 举报
回复
设表名为CHENGJI

SELECT COUNT(*) AS 总人数 FROM CHENGJI INTO TABLE TMP0
LNSUMYS=总人数
SELECT 县市,科目 count(成绩) as 人数,count(成绩)/LNSUMYS AS 比率,'60分以下' as 备注 FROM CHENGJI where 成绩<60 GROUP BY 1,2 INTO TABLE TMP1

SELECT 县市,科目 count(成绩) as 人数,count(成绩)/LNSUMYS AS 比率,'60分-69分' as 备注 FROM CHENGJI where 69>=成绩 and 成绩>=60 GROUP BY 1,2 INTO TABLE TMP2

SELECT 县市,科目 count(成绩) as 人数,count(成绩)/LNSUMYS AS 比率,'70分-79分' as 备注 FROM CHENGJI where 79>=成绩 and 成绩>=70GROUP BY 1,2 INTO TABLE TMP3

SELECT 县市,科目 count(成绩) as 人数,count(成绩)/LNSUMYS AS 比率,'80分-89分' as 备注 FROM CHENGJI where 89>=成绩 and 成绩>=80 GROUP BY 1,2 INTO TABLE TMP4

SELECT 县市,科目 count(成绩) as 人数,count(成绩)/LNSUMYS AS 比率,'90分以上' as 备注 FROM CHENGJI where 成绩>=90 GROUP BY 1,2 INTO TABLE TMP5

SELECT TMP5
APPEND FROM TMP1
APPEND FROM TMP2
APPEND FROM TMP3
APPEND FROM TMP4

TMP5为你要的表
dfwxj 2005-07-22
  • 打赏
  • 举报
回复
先将指标计算好了存放在变量中,然后根据需要调用

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧