Sql根据不同条件统计总数

前言

经常会遇到根据不同的条件统计总数的问题,一般有两种写法:count和sum都可以
数据准备:
在这里插入图片描述

方法一 :Count

代码:

SELECT
	COUNT(
		CASE
		WHEN age > 20
		AND age < 25 THEN
			1
		ELSE
			NULL
		END
	) AS cnt0,
	COUNT(
		CASE
		WHEN age >= 25
		AND age < 30 THEN
			1
		ELSE
			NULL
		END
	) AS cnt1
FROM
	USER;

结果:
在这里插入图片描述

方法二:sum

代码:

SELECT
	SUM(
		CASE
		WHEN age > 20
		AND age < 25 THEN
			1
		ELSE
			0
		END
	) AS cnt0,
	SUM(
		CASE
		WHEN age >= 25
		AND age < 30 THEN
			1
		ELSE
			0
		END
	) AS cnt1
FROM
	USER;

结果:
在这里插入图片描述
当然也可以和count代码一样ELSE后面也写为NULL

SELECT
	SUM(
		CASE
		WHEN age > 20
		AND age < 25 THEN
			1
		ELSE
			NULL
		END
	) AS cnt0,
	SUM(
		CASE
		WHEN age >= 25
		AND age < 30 THEN
			1
		ELSE
			NULL
		END
	) AS cnt1
FROM
	USER;

后记

其实原理很简单,count统计的时候有满足条件的就加1,没有满足的变为NULL,我们知道聚合函数统计的时候是忽略null值的;而sum原理和coun相似,不过ELSE后面可以是0或者NULL。

  • 15
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实验课题一、人员档案的管理、物料档案管理 (1)设计实现对企业人员基本情况的档案的输入、删除与修改,企业人员基本情况主要包括:人员代码、姓名、性别、出生日期、身份证号、籍贯、家庭住址、联系电话、其它情况等。 1. 程序须包括主界面程序,程序名用“班级名+座号+main”,主界面可以通过菜单调用到其它所有子程序。 2. 人员档案的增加、修改、删除的程序,其中人员档案表在数据库中必须以“班级+座号+(表示人员的中英文信息)”来命名,人员档案的信息管理程序也必须以“班级+座号+(表示程序名的中英文信息)”来命名。其中人员代码不能为空,性别必须用“男”、“女”选择方式,出生日期必须用日期控件来控制。修改、删除程序在执行修改删除操作前,都必须进行记录定位操作,所以必须有相应的查询程序,可以借用查询程序来完成记录定位。人员档案的增加、修改、删除程序也可以用三个程序名,分别编程。 3. 人员档案查询程序,程序名以“班级+座号+(表示程序名的中英文信息)”来命名,可以在查询框中输入人员姓名中的任何一个单字,查询出含该字的所有人员。 (2)物料档案包括物料代码、物料名称、规格型号、计量单位、库存数量、备注等字段。 1. 物料档案的增加、修改、删除程序,程序名以“班级+座号+(表示程序名的中英文信息)”来命名,具体内容参考人员档案管理程序。物料表在数据库中以“班级+座号+(表示程序名的中英文信息)”来命名表,客户端输入时要求物料代码不为空,计量单位可以选择“件、套、公斤、吨、升、米、毫米、个”等,计量单位并可以输入其它单位名,库存数量默认为0。 2. 物料查询程序可以在通过输入框的文字进行模糊查询(物料代码、名称、规格中是否含有输入框的文字),程序名用“班级+座号+(表示程序名的中英文信息)”来命名。 实验课题二、简单物料进仓/出仓信息管理 企业物料进出仓的信息管理,物料进出仓的信息主要包括进出仓单号、进出仓日期、操作人员代码、备注、物料代码、进仓数量、出仓数量等 1. 企业仓库进出仓信息表以“班级+座号+(表示程序名的中英文信息)”来命名,可以用一个表,也可以用二个表(一对多关系),具体表设计的思路须在报告中描述。 2. 进仓程序与出仓程序可以合并,也可以分开做,名称以“班级+座号+(表示程序名的中英文信息)”来命名。其中操作人员必须用下拉框来选择;单号要自己编规则自动生成,单号产生规则在报告中说明;进出仓日期用日期控件;物料代码必须下拉框做选择;当物料出仓时必须判断出仓数量时候超过物料的库存数量,物料的库存数量在物料表中可以获得该物料的库存数量。进行进仓或出仓操作时必须通过调用存储过程来实现,存储过程将操作结果返回调用者,显示成功或失败的信息。 3. 进仓、出仓的存储过程可以合并或分开做,存储过程名称以“班级+座号+(表示程序名的中英文信息)”来命名,存储过程要判断物料是否存在,操作后物料库存数量是否不为负数;如果不满足条件显示,失败提示;如果满足条件,增加进出仓表记录一条,并根据进出仓物料的数量对物料表中库存数量进行修改,提交数据库操作,否则回滚。 4. 进出仓单查询程序,以“班级+座号+(表示程序名的中英文信息)”来命名,可以用进出仓日期起止条件,物料代码、操作人员、备注(用子串查询)来完成。 实验课题三、多物料进出仓信息管理 一般企业进行物料进出仓时,多在一个进出仓单号上同时对多种物料做同进或同出操作,通过程序实现多个物料在一个界面一个单号上同时实现进仓或出仓操作,如果不成功,必须全部回滚。 1. 多物料进仓出仓,可以在一个程序中完成,也可以分开编程,程序名以“班级+座号+(表示程序名的中英文信息)”来命名,同一单号中进出仓单号、进出仓日期、操作人员必须完全相同,同一单号中不能进仓与出仓同时存在,通过调用存储过程完成进出仓操作。 2. 多物料进出仓存储过程,过程名以“班级+座号+(表示程序名的中英文信息)”来命名,多物料进出仓单增加到表中,并修改多个物料的库存数量,失败就显示提示内容。 实验课题四、用户登录与权限设计 用户在这里就指操作人员,已经在人员档案中进行管理,通过设计用户登录和用户权限的管理,实现用户按权限访问资源,管理员按要求授予用户权限,登录程序安全稳定,设计用户菜单及程序调用。人员表中需要新增字段口令、用户权限。系统中每个操作人员都可以作为用户,当一个用户权限修改时,不会影响其他用户;可以对每个用户单独授予某个程序的执行权,也可以收回其执行权,而不影响其他用户的权限; 1. 用户登录程序,名称用以“班级+座号+(表示程序名的中英文信息)”来命名,输入用户名和口令,判断正确后,按用户的权限,显示有权的菜单项,无权菜单项必须不可见或不可操作。 2. 用户授权程序,名称用以“班级+座号+(表示程序名的中英文信息)”来命名。有授权权限的用户,可以指定某个用户获取某个程序执行权,或被禁止某个程序的执行权。 实验课题五、统计程序设计与报表打印 按物料统计进出仓流量,计算分析流动量最小的物料。按月份打印进出仓单表,打印进出仓单,按物料打印仓库账本。 1. 物料统计程序,统计各物料在指定时间内的进出仓数量总数,用图形显示,程序名以“班级+座号+(表示程序名的中英文信息)”来命名。 2. 打印进出仓单程序,给定月份,将该月进出仓单全部按单号顺序打印出来,程序名以“班级+座号+(表示程序名的中英文信息)”来命名。 3. 打印仓库账本程序,给定年份和物料,打印物料代码、名称、规格、计量单位、各日期的进仓、出仓和库存量;程序名以“班级+座号+(表示程序名的中英文信息)”来命名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyRivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值