Sql 如何使用GridView is ASP.net获取平均值

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 + "%'",

我能够使用gridview从SQL数据库中检索数据,并且工作正常。但我试图得到一个特定的列平均值,但我不能做到这一点。 这段代码让我看到我想要什么:

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的整体外观。你好,只想在一个字段或文本框中获得所有分数的平均值。你能帮我吗?我的意思是,你告诉我做的每件事都非常有效,这就是我需要的它。这个刚刚出现,有了那个平均值,然后把它放到一个文本框中