数据表中,有单位代码dw,总分zf、年级nj、考试名ksm等字段,要求一分一段列出各学校人数,累计合计人数,下面语句基本能实现,但是运行速度很慢,而且我考虑中间统计各学校人数的部分应该可以动态生成,如果单位很多的话,这样写就不行了,请高手指点一二。
SELECT DISTINCT ZF AS 总分,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM) 累计,
COUNT(*) 合计,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0101') RHP,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0201') YG,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0301') CLP,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0401') WF,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0501') WT,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0601') FJY,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0701') CH,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0801') NZ
FROM KS A WHERE ZF>0 AND NJ=9 AND KSM='2013年4月考试' GROUP BY ZF,KSM ORDER BY ZF DESC
SELECT DISTINCT ZF AS 总分,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM) 累计,
COUNT(*) 合计,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0101') RHP,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0201') YG,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0301') CLP,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0401') WF,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0501') WT,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0601') FJY,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0701') CH,
(SELECT COUNT(*) FROM KS WHERE ZF>=A.ZF AND KSM=A.KSM AND DW='0801') NZ
FROM KS A WHERE ZF>0 AND NJ=9 AND KSM='2013年4月考试' GROUP BY ZF,KSM ORDER BY ZF DESC