Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

SQL的Group By语句后面的聚类函数所用的字段,是否可以对字段本身再做限定?

Ronaldinho  发表于:2017-11-20 09:56:15  
复制

举个例子,我现在有一个数据库,一个小学,六个年级,每个年级三个班,每个班30个人,每个人都有语文数学成绩,但成绩分两类,高于60分的及格,以及低于60分的不及格。

现在假如我需要统计每个年级语文成绩及格和不及格的人数各是多少,甚至是直接统计每个年级语文成绩的及格率,使用SQL的话应该如何写呢?

我使用的是Access中的SQL,尝试过的语句是:


SELECT 年级 , COUNT(语文成绩) as 语文成绩及格人数 FROM 数据库

WHERE 语文成绩 > 60

GROUP BY 年级


这样的语句我可以统计出“语文成绩”这个字段中及格或者不及格的数量,通过后面的WHERE限定,但我如果需要的是后面直接出现两个COUNT聚类函数,一个统计及格人数,另一个统计不及格人数的话,这个语句应该怎么写呢?

请好心人赐教!!

 

Top
仙来 发表于:2017-11-20 15:51:33
下载示例 供参考!

 



Ronaldinho 发表于:2017-11-21 17:16:53

谢谢二楼的回答,确实可以非常好地解决我例子中的情况!

但实际上如果我想做的是group by聚合之后,再用某一个字段把聚合出来的数字横向分块,而这个字段的字段值又不止2个的话,是不是就不太好实现了?

说着抽象,还是举个例子吧,同样是上面的成绩分组,如果不判断是否及格,是判断优良中差,90-100为优,80-89为良,70-79为中,70以下是差,我想知道每个年级,语文成绩,优良中差四档各多少人的话,能做到吗?

其实就是类似excel透视表,正常地拉好行字段还有求和、计数项之后,又想在列上加一个或者多个字段,这样的话如何实现呢? 



仙来 发表于:2017-11-23 10:44:51

用了一个笨办法,看可是你要的。下载示例



Ronaldinho 发表于:2017-11-23 14:03:40
谢谢仙来兄弟

总记录:4篇  页次:1/1 9 1 :