【发布时间】:2022-01-08 01:13:50
【问题描述】:
我正在尝试找到一种方法来计算列的平均值(作为双精度/浮点数或小数)。我在 MySQL 文档中找到了 AVG 函数,但我无法让它工作。目前我有以下代码:
public double GetRating(string username)
{
double average;
MySqlConnection databaseConnection = new MySqlConnection(connectionString);
string sumQuery = "select sum('rating') from " + username;
string countQuery = "SELECT COUNT(*) FROM " + username;
using (MySqlCommand sumCommand = new MySqlCommand(sumQuery, databaseConnection))
using (MySqlCommand countCommand = new MySqlCommand(countQuery, databaseConnection))
try
{
databaseConnection.Open();
double sum = (Double)sumCommand.ExecuteScalar();
double columnLength = (Double)countCommand.ExecuteScalar();
average = sum / columnLength;
return average;
}
finally
{
databaseConnection.Close();
}
return average;
}
现在由于某种原因这不起作用。它返回“无法将'System.Int64'类型的对象转换为'System.Double'类型。”
数据库中存储的数据是一个 int,但我试图将它们转换为加倍。有什么建议或解决方案吗?再来一次; double/float 或 decimal 对我有用。
【问题讨论】:
-
您可以使用
AVG函数来代替计算总和、计算行数和除值。 -
我尝试过使用 AVG 功能,但我无法让它工作......你认为你可以给我举个例子吗?
-
等等:每个用户名都有不同的表?为什么要这么做?您还可以使用
ExecuteReader从单个SELECT返回多个结果
标签: c# mysql sql aggregate-functions