Sql 如何使用GridView is ASP.net获取平均值
我能够使用gridview从SQL数据库中检索数据,并且工作正常。但我试图得到一个特定的列平均值,但我不能做到这一点。 这段代码让我看到我想要什么:Sql 如何使用GridView is ASP.net获取平均值,sql,Sql,我能够使用gridview从SQL数据库中检索数据,并且工作正常。但我试图得到一个特定的列平均值,但我不能做到这一点。 这段代码让我看到我想要什么: try { SqlDataAdapter da = new SqlDataAdapter("select fecha, Nota from X where Department like '" + "Department1'" + " and Analyst like '" + analyst + "%'",
try
{
SqlDataAdapter da = new SqlDataAdapter("select fecha, Nota from X where Department like '" + "Department1'" + " and Analyst like '" + analyst + "%'", cn);
DataTable dt = new DataTable();
da.Fill(dt);
this.GridView1.DataSource = dt;
GridView1.DataBind();
}
catch (Exception ex)
{
throw ex;
}
如何获取该特定部门所有行的Nota平均值?
从X中选择平均值(Nota),其中部门(如'Department1'和分析师(如'Analyst%')按部门分组制作代码如下:
//try
//{
SqlDataAdapter da = new SqlDataAdapter(@"
select
fecha, Nota, avg(nota) over(partition by department) as avgnota
from X
where
Analyst like @ana", cn);
DataTable dt = new DataTable();
da.SelectCommand.Parameters.AddWithValue("@ana", analyst+"%"); //later, google for "can we stop using AddWithValue already"
da.Fill(dt);
this.GridView1.DataSource = dt;
GridView1.DataBind();
/*}
catch (Exception ex)
{
throw ex;
}*/
变化:
- 删除了不必要的异常“处理”
- 增加了每个部门平均nota的窗口函数平均计算
- 从where子句中删除了一个部门(不是一个平均值!?但是如果您愿意,可以将其添加回去)
- 删除了不必要的字符串停止-开始连接
- 已将sql转换为使用参数-请参阅
如果您只有一个部门,则可以通过添加一个DataColumn,并将Expression属性设置为AVG([nota]),使datatable计算平均值
但只有在您的表中包含一个for department时才可靠。要拥有一个包含多个department的数据表并计算每个department的平均值,它需要位于一个数据集中,与父表有一个关系,并且平均值将沿着该关系运行-比其价值更麻烦旁注:没有poin捕获异常时,您将立即重新抛出。简化代码并省略try catch。在sql tooThanks中使用参数,再问一个问题,Department1有4个分数,因此当我运行此项时,平均值将显示4次。是否有一种方法使此平均值仅显示一次?avgnota 70.000000 70.000000 70.000000 70.000000您希望如何你问了一个简单的问题,但它有一个广泛的答案,这在很大程度上取决于你想要构建的ui的整体外观。你好,只想在一个字段或文本框中获得所有分数的平均值。你能帮我吗?我的意思是,你告诉我做的每件事都非常有效,这就是我需要的它。这个刚刚出现,有了那个平均值,然后把它放到一个文本框中