如何获得 MySQL 中一列的平均值
How to get the average of a column in MySQL
我正在尝试找到一种方法来计算列的平均值(作为 double/float 或小数)。我在 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;
}
现在由于某种原因这不起作用。它 returns“无法将类型 'System.Int64' 的对象转换为类型 'System.Double'。”
数据库中存储的数据是一个整数,但我正在尝试将它们转换为双精度。有什么建议或解决方案吗?再次; double/float 或小数对我有用。
内置的AVG
函数(聚合函数)可以这样使用:
select avg(rating) from table_name
请注意,与大多数聚合函数一样,平均值将排除空值(1, 2, null
的平均值是 1.5 而不是 1.0)。此外,在 MySQL 中,如果您对小数或整数列求平均值,则 return 数据类型将为 decimal
,因此请使用适当的 C# 数据类型。
几件事:
- table 中的
rating
列的数据类型是什么?如果它是一个整数而不是浮点数,请相应地更改 sum
的数据类型以避免类型转换错误。
- 如您所知,您可以使用 avg() 而不是 sum(),然后除以
count()
。您的 SQL 将如下所示:
select avg(rating) from table_name
我正在尝试找到一种方法来计算列的平均值(作为 double/float 或小数)。我在 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;
}
现在由于某种原因这不起作用。它 returns“无法将类型 'System.Int64' 的对象转换为类型 'System.Double'。”
数据库中存储的数据是一个整数,但我正在尝试将它们转换为双精度。有什么建议或解决方案吗?再次; double/float 或小数对我有用。
内置的AVG
函数(聚合函数)可以这样使用:
select avg(rating) from table_name
请注意,与大多数聚合函数一样,平均值将排除空值(1, 2, null
的平均值是 1.5 而不是 1.0)。此外,在 MySQL 中,如果您对小数或整数列求平均值,则 return 数据类型将为 decimal
,因此请使用适当的 C# 数据类型。
几件事:
- table 中的
rating
列的数据类型是什么?如果它是一个整数而不是浮点数,请相应地更改sum
的数据类型以避免类型转换错误。 - 如您所知,您可以使用 avg() 而不是 sum(),然后除以
count()
。您的 SQL 将如下所示:
select avg(rating) from table_name