Asp.net 如何在sql中计算平均整数值
我有一些问题需要解决程序中的一个错误。我试图平均一个整数列,但当平均值为0时出现错误。有些东西,,, 例如,我有一个数据:Asp.net 如何在sql中计算平均整数值,asp.net,sql,sql-server,vb.net,Asp.net,Sql,Sql Server,Vb.net,我有一些问题需要解决程序中的一个错误。我试图平均一个整数列,但当平均值为0时出现错误。有些东西,,, 例如,我有一个数据: Varchar1 | Varchar2 | Value 1401_1 | 1401_1_1 | 1 1401_1 | 1401_1_2 | 0 1401_1 | 1401_1_3 | 1 1401_1 | 1401_1_4 | 1 1401_1 | 1401_1_5 | 0 然后我用group by varchar1对值求和,结果得到0,
Varchar1 | Varchar2 | Value
1401_1 | 1401_1_1 | 1
1401_1 | 1401_1_2 | 0
1401_1 | 1401_1_3 | 1
1401_1 | 1401_1_4 | 1
1401_1 | 1401_1_5 | 0
然后我用group by varchar1对值求和,结果得到0,它应该是0,6。这是我的密码:
Dim sqlProducts As String = "SELECT * FROM (SELECT TOP 7 [Varchar1] AS Varchar1_, AVG(CASE WHEN [Type] = 'Something1' THEN Value1 ELSE 0 END) AS Display1, AVG(CASE WHEN [Type] = 'Something2' THEN Value1 ELSE 0 END) AS [Display2] FROM tbl_table GROUP BY [Varchar1] order by [Varchar1] DESC)x ORDER BY Varchar1_ ASC"
我认为我不能从整数中得到十进制的结果,然后我希望它在0.0时显示1,所以它取上限值。有可能怎么做吗
谢谢你的帮助。非常感谢。您的问题是:
SELECT *
FROM (SELECT TOP 7 [Varchar1] AS Varchar1_, AVG(CASE WHEN [Type] = 'Something1' THEN Value1 ELSE 0 END) AS Display1, AVG(CASE WHEN [Type] = 'Something2' THEN Value1 ELSE 0 END) AS [Display2]
FROM tbl_table
GROUP BY [Varchar1]
order by [Varchar1] DESC
)x
ORDER BY Varchar1_ ASC
SQL Server进行整数除法,这也适用于AVG()
。使用浮点数
SELECT *
FROM (SELECT TOP 7 [Varchar1] AS Varchar1_,
AVG(CASE WHEN [Type] = 'Something1' THEN cast(Value1 as float) ELSE 0 END) AS Display1,
AVG(CASE WHEN [Type] = 'Something2' THEN cast(Value1 as float) ELSE 0 END) AS [Display2]
FROM tbl_table
GROUP BY [Varchar1]
order by [Varchar1] DESC
) x
ORDER BY Varchar1_ ASC
顺便说一下,我发现else 0
可疑。这将用0
替换不匹配的值。更典型的情况是,您希望忽略它们:
SELECT *
FROM (SELECT TOP 7 [Varchar1] AS Varchar1_,
AVG(CASE WHEN [Type] = 'Something1' THEN cast(Value1 as float) END) AS Display1,
AVG(CASE WHEN [Type] = 'Something2' THEN cast(Value1 as float) END) AS [Display2]
FROM tbl_table
GROUP BY [Varchar1]
order by [Varchar1] DESC
) x
ORDER BY Varchar1_ ASC