sql server 求多个字段中的最小值和最大值

这篇具有很好参考价值的文章主要介绍了sql server 求多个字段中的最小值和最大值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序代码园发文地址:sql server 求多个字段中的最小值和最大值-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,sql server 求多个字段中的最小值和最大值http://www.byqws.com/blog/2143.html

     今天在工作中,遇到一个需求,需要把最近6个月的出库数据,去掉一个最大值一个最小值,然后剩下的4个月的数据做平均,网上找了一下,如何在这6个字段中获取最大值,最小值。没有找到可行的办法,现将我的解决办法写出来供大家参考使用。

第一、我先将6个字段的数据组合起来并用逗号隔开

sql server 求多个字段中的最小值和最大值,数据库

第二、准备函数 fnSplit ,用于将用“,”逗号隔开的数据处理成表格形式。

sql server 求多个字段中的最小值和最大值,数据库

第三、准备取最大值函数 fn_getListMax ,传入一个字符串返回其中的最大值

代码如下:

ALTER FUNCTION [dbo].[fn_getListMax]
(
	@List varchar(200)
)
RETURNS varchar(200)
AS
BEGIN
    declare @max_ int
    declare  @temp table(
			id int IDENTITY
			,FValue int			
		)
		
		insert into @temp(FValue)
		select convert(int,item) FROM dbo.fnSplit(@List,',')
		
		set @max_ = (select top 1 FValue from @temp order by FValue desc)
		
    RETURN @max_
END

思路:

1、将传进来的字符串用 函数 fnSplit 处理后将结果写进临时表 @temp 中

2、对临时表@temp做值的降序排序

3、将第一个数据赋值给变量 @max_

4、返回变量 @max_

sql server 求多个字段中的最小值和最大值,数据库

返回最大值:18004

第四、准备取最小值函数 fn_getListMin,传入一个字符串返回其中的最小值

代码如下:

ALTER FUNCTION [dbo].[fn_getListMin]
(
	@List varchar(200)
)
RETURNS varchar(200)
AS
BEGIN
    declare @min_ int
    declare  @temp table(
			id int IDENTITY
			,FValue int	
		)
		
		insert into @temp(FValue)
		select convert(int,item) FROM dbo.fnSplit(@List,',')
		
		set @min_ = (select top 1 FValue from @temp order by FValue)
		
    RETURN @min_
END

思路:

1、将传进来的字符串用 函数 fnSplit 处理后将结果写进临时表 @temp 中

2、对临时表@temp做值的升序排序

3、将第一个数据赋值给变量 @min_

4、返回变量 @min_

sql server 求多个字段中的最小值和最大值,数据库

返回最小值:7793

第五、准备取中间值函数 fn_getListMiddle,传入一个字符串返回其中的中间值(排除最大值和最小值其余值)

代码如下:

ALTER FUNCTION [dbo].[fn_getListMiddle]
(
	@List varchar(200)
)
RETURNS varchar(200)
AS
BEGIN
    declare @middle_ int
    declare  @temp table(
			id int IDENTITY
			,FValue int
			,type varchar(200)			
		)
		
		insert into @temp(FValue)
		select convert(int,item) FROM dbo.fnSplit(@List,',')
		
		update @temp set type = 'max' where id = (select top 1 id from @temp order by FValue desc) 
		update @temp set type = 'min' where id = (select top 1 id from @temp order by FValue)
		
		set @middle_ = (select sum(convert(int,FValue)) from @temp where type is null)
		
    RETURN @middle_
END

思路:

1、将传进来的字符串用 函数 fnSplit 处理后将结果写进临时表 @temp 中

2、临时表@temp 中这次多了一个字段 type ,通过对 值 FValue 的升序和降序排序,更新字段 type 为 “max”,“min” 

3、将字段 type 为 null 的数据求和赋值给变量 @middle_

4、返回变量 @middle_

sql server 求多个字段中的最小值和最大值,数据库

返回中间值的和:38998

第六、将以上函数待入使用场景中运用

sql server 求多个字段中的最小值和最大值,数据库

通过以上几个函数就可以实现这个需求,获取6个月出库数据中最大值,最小值,中间值求和,剩余4个月值的平均值。

 

程序代码园发文地址:sql server 求多个字段中的最小值和最大值-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,sql server 求多个字段中的最小值和最大值http://www.byqws.com/blog/2143.html 文章来源地址https://www.toymoban.com/news/detail-808992.html

到了这里,关于sql server 求多个字段中的最小值和最大值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包