SQL统计求和

需求

现在有一张学生Student表,表中有字段语文Chinese、数学Math、英语English、化学chemistry、物理physics等成绩,每科成绩可以分为A\B\C三个等级,现在要求:
1.统计出全部成绩为C的学生的人数;
2.统计出其中有一科成绩为A的学生的人数!(注:此需求是胡编乱造的,不一定和生活规律一致,忘忽略!)
即:T_STUDENT

IDNAMECHINESEMATHENGLISHCHEMISTRYPHYSICS
qwsdefrbfg小明ACDDA
sqwefcreh1小红BBBBB
swegtrjn1s5小花BACCB
dwegfjyuk4s小美AAAAA
3ederb4sdq小傻CCCCC
wedf3334sq小瓜CCCCC

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_CCOUNT_EXIST_TO_A
23
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值