SQL统计求和
- 需求
- SQL写法
- 业务SQL运行结果
需求
现在有一张学生Student表,表中有字段语文Chinese、数学Math、英语English、化学chemistry、物理physics等成绩,每科成绩可以分为A\B\C三个等级,现在要求:
1.统计出全部成绩为C的学生的人数;
2.统计出其中有一科成绩为A的学生的人数!(注:此需求是胡编乱造的,不一定和生活规律一致,忘忽略!)
即:T_STUDENT
ID | NAME | CHINESE | MATH | ENGLISH | CHEMISTRY | PHYSICS |
---|---|---|---|---|---|---|
qwsdefrbfg | 小明 | A | C | D | D | A |
sqwefcreh1 | 小红 | B | B | B | B | B |
swegtrjn1s5 | 小花 | B | A | C | C | B |
dwegfjyuk4s | 小美 | A | A | A | A | A |
3ederb4sdq | 小傻 | C | C | C | C | C |
wedf3334sq | 小瓜 | C | C | C | C | C |
SQL写法
为了不浪费大家的时间,本人已经准备好了这一套流程的SQL供大家使用测试!
1.建表SQL
CREATE TABLE T_STUDENT(ID VARCHAR(32) NOT NULL,NAME VARCHAR(12) NOT NULL,CHINESE CHAR(1) NOT NULL,MATH CHAR(1) NOT NULL,ENGLISH CHAR(1) NOT NULL,CHEMISTRY CHAR(1) NOT NULL,PHYSICS CHAR(1) NOT NULL,PRIMARY KEY(ID))
2.导入数据
INSERT INTO T_STUDENT (ID,NAME,CHINESE,MATH,ENGLISH,CHEMISTRY,PHYSICS)VALUES('qwsdefrbfg','小明','A','C','D','D','A'),('sqwefcreh1','小红','B','B','B','B','B'),('swegtrjn1s5','小花','B','A','C','C','B'),('dwegfjyuk4s','小美','A','A','A','A','A'),('3ederb4sdq','小傻','C','C','C','C','C'),('wedf3334sq','小瓜','C','C','C','C','C')
3.业务SQL
SELECTSUM(CASEWHEN CHINESE||MATH||ENGLISH||CHEMISTRY||PHYSICS='CCCCC' THEN 1 ELSE 0 END) COUNT_ALL_TO_C,SUM(CASE WHEN CHINESE='A' OR MATH='A' OR ENGLISH='A' OR CHEMISTRY='A' OR PHYSICS='A'THEN 1 ELSE 0 END) COUNT_EXIST_TO_AFROM T_STUDENT
4.删表SQL
DROP TABLE T_STUDENT
业务SQL运行结果
COUNT_ALL_TO_C | COUNT_EXIST_TO_A |
---|---|
2 | 3 |
本文链接:https://my.lmcjl.com/post/14963.html
展开阅读全文
4 评论