需求
現在有一張學生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
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
業務SQL運行結果
COUNT_ALL_TO_C | COUNT_EXIST_TO_A |
---|---|
2 | 3 |