现在有一张学生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供大家使用测试!
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
SELECT
SUM
(
CASE
WHEN 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_A
FROM
T_STUDENT
4.删表SQL
DROP TABLE T_STUDENT
COUNT_ALL_TO_C | COUNT_EXIST_TO_A |
---|---|
2 | 3 |