Sql 从数据库中的字段计算数字
我正在为一个棒球队建立一个数据库,其中一个表格是关于投手数据的。如果你知道棒球,你就知道棒球时代的计算方法是(放弃/除以投球局的赢得的得分)*9 在表中,我对投球局和赢得的得分有单独的列,通过SQL语句,我想计算ERA 目前投出的局数存储为十进制,如“1.0”或“6.1”或“7.2”,但在计算时,如果有十进制(如“7.2”),我需要将“.2”实际更改为“.66666”,或将“.1”更改为“.33333” 以下是我迄今为止在SQL中尝试的内容:Sql 从数据库中的字段计算数字,sql,sql-server,Sql,Sql Server,我正在为一个棒球队建立一个数据库,其中一个表格是关于投手数据的。如果你知道棒球,你就知道棒球时代的计算方法是(放弃/除以投球局的赢得的得分)*9 在表中,我对投球局和赢得的得分有单独的列,通过SQL语句,我想计算ERA 目前投出的局数存储为十进制,如“1.0”或“6.1”或“7.2”,但在计算时,如果有十进制(如“7.2”),我需要将“.2”实际更改为“.66666”,或将“.1”更改为“.33333” 以下是我迄今为止在SQL中尝试的内容: SELECT *, CONVERT(DECI
SELECT *, CONVERT(DECIMAL(10,2), ((stat_er / NULLIF(stat_ip,0)) * 9)) AS stat_era FROM stats_pitching ORDER BY stat_era ASC
这会将“stat_ip”更改为.0“、.1”或.2”,因为这是从数据库中获得的。如何将SQL表达式中以.1”或.2“结尾的列中的任何内容更改为.3333”或.6666?我会使用“Case”类型吗?如果是,是否有人有一些示例?您可以使用
Case
如下:
declare @x decimal(38,6) = 7.1
select case @x - cast(FLOOR(@x) as decimal)
when 0 THEN @x
when 0.1 THEN cast(FLOOR(@x) as decimal) + 0.3333
when 0.2 THEN cast(FLOOR(@x) as decimal) + 0.6666
end
这将永远改变
- x、 0到x.0
- x、 1至x.3333
- x、 2至x.6666
其中x是一个整数。您可以使用
CASE
如下:
declare @x decimal(38,6) = 7.1
select case @x - cast(FLOOR(@x) as decimal)
when 0 THEN @x
when 0.1 THEN cast(FLOOR(@x) as decimal) + 0.3333
when 0.2 THEN cast(FLOOR(@x) as decimal) + 0.6666
end
这将永远改变
- x、 0到x.0
- x、 1至x.3333
- x、 2至x.6666
其中x是一个整数。您可以使用
CASE
如下:
declare @x decimal(38,6) = 7.1
select case @x - cast(FLOOR(@x) as decimal)
when 0 THEN @x
when 0.1 THEN cast(FLOOR(@x) as decimal) + 0.3333
when 0.2 THEN cast(FLOOR(@x) as decimal) + 0.6666
end
这将永远改变
- x、 0到x.0
- x、 1至x.3333
- x、 2至x.6666
其中x是一个整数。您可以使用
CASE
如下:
declare @x decimal(38,6) = 7.1
select case @x - cast(FLOOR(@x) as decimal)
when 0 THEN @x
when 0.1 THEN cast(FLOOR(@x) as decimal) + 0.3333
when 0.2 THEN cast(FLOOR(@x) as decimal) + 0.6666
end
这将永远改变
- x、 0到x.0
- x、 1至x.3333
- x、 2至x.6666
其中x是一个整数。您可以通过使用
ROUND
函数应用简单的数学来实现。假设Value
是您的列名
ROUND(Value, 0) + (10 * (Value - ROUND(Value, 0)) / 3)
小演示:您可以通过使用
ROUND
函数应用简单的数学来实现。假设Value
是您的列名
ROUND(Value, 0) + (10 * (Value - ROUND(Value, 0)) / 3)
小演示:您可以通过使用
ROUND
函数应用简单的数学来实现。假设Value
是您的列名
ROUND(Value, 0) + (10 * (Value - ROUND(Value, 0)) / 3)
小演示:您可以通过使用
ROUND
函数应用简单的数学来实现。假设Value
是您的列名
ROUND(Value, 0) + (10 * (Value - ROUND(Value, 0)) / 3)
小演示:我遇到了一个类似的问题,并通过这种方式解决了它
select CASE WHEN CAST(stat_ip as VARCHAR) like '%.1%' THEN stat_ip + .2333333
WHEN CAST(stat_ip as VARCHAR) like '%.2%' THEN stat_ip + .4666667
ELSE stat_ip
END
from stats_pitching
我有一个类似的问题,并以这种方式解决了它
select CASE WHEN CAST(stat_ip as VARCHAR) like '%.1%' THEN stat_ip + .2333333
WHEN CAST(stat_ip as VARCHAR) like '%.2%' THEN stat_ip + .4666667
ELSE stat_ip
END
from stats_pitching
我有一个类似的问题,并以这种方式解决了它
select CASE WHEN CAST(stat_ip as VARCHAR) like '%.1%' THEN stat_ip + .2333333
WHEN CAST(stat_ip as VARCHAR) like '%.2%' THEN stat_ip + .4666667
ELSE stat_ip
END
from stats_pitching
我有一个类似的问题,并以这种方式解决了它
select CASE WHEN CAST(stat_ip as VARCHAR) like '%.1%' THEN stat_ip + .2333333
WHEN CAST(stat_ip as VARCHAR) like '%.2%' THEN stat_ip + .4666667
ELSE stat_ip
END
from stats_pitching
7.666666怎么可能真的意味着7.2???7.2真的意味着7.2句点,它可以是无限数的向上或向下舍入值。例如7.1676,7.178,7.1989234324234324324类似于我所说的无限数。在美国棒球统计中使用.1和.2来表示一局的三分之一和三分之二是很常见的。7.66666666 r怎么可能真的是指7.2???7.2真的是指7.2周期,它可以是无限数的四舍五入或四舍五入值。例如7.1676,7.178,7.198923432424324,就像我说的无限数一样。在美国棒球统计中,使用.1和.2代表一局的三分之一和三分之二是很常见的。7.666666怎么真的是指7.2???7.2实际上意味着7.2句点,它可以是无限数的向上或向下舍入值。例如7.1676、7.178、7.1989234324234324324,就像我说的无限数一样。在美国棒球统计中,使用.1和.2来代表一局的三分之一和三分之二。7.666666怎么可能真的意味着7.2???7.2真的意味着7.2句点,它可以是无限数的向上或向下舍入值。例如7.1676、7.178、7.1989234324234324,就像我说的无限数一样。在美国棒球统计中,使用.1和.2代表一局的三分之一和三分之二是很常见的。