sql Compute by语句用法

       在对数据进行统计分析时,如果既需要保存查询结果,又能在查询结果下面将统计结果显示出来,就非常直观了。

      

 

       Compute子句用于生成合计,并将其作为附加的汇总列出现在结果集的最后,当与by一起使用时,Compute子句在结果集内生成控件中断和分类汇总。可在同一查询内指定Compute byCompute

其语法格式如下:

[Compute

{

{Avg | count | max | min | stdev | stdevp| var | varp | sum  (expression)}[,…n]

[by expressin [,….]]

}]

      

Compute子句中使用的聚合函数

行聚合函数

结果

Avg

数字表达式中所有值的平均值

Count

选定的行数

Max

最大值

Min

最小值

Stdev

统计值的标准偏差

Stdevp

填充统计的标准偏差

Sum

求和

Var

统计方差

Varp

填充统计方差

 

注意:聚合函数不能使用字段别名。

 

Group byCompute都可以汇总数据,但在结果集上还是存在区别的。

 

测试数据

1     *                     1500.0    文档部   

2     *                     1200.0    设计部   

3     *                    1000.0    设计部   

5     *                     800.0      文档部   

8     *                    1200.0    文档部   

10    *                     2000.0    设计部   

11    *                    1600.0    ASP    

12    *                     1500.0    ASP    

13    *                    1400.0    ASP    

16    *                     1000.0    文档部

  

(1)    select 所属部门,部门工资合计=sum(工资) from 工资表 group by 所属部门

Group by生成单个结果集,每个组都有一个只包含分组依据和显示该组子聚合的聚合函数的行。

 

 

(2) select * from 工资表 order by 所属部门 compute sum(工资)

      

Compute生成多个结果集。一类结果集包含每个组的明细行,其中包含选择列表中的表达达式。另一类结果集包含组的子聚合合,或Select语句的总聚合。

 

asp.net 中的应用:

   protected void Page_Load(object sender, EventArgs e)

    {

        SqlConnection con = new SqlConnection("server=(local);user id=sa;pwd=sa;Database=db_09");

        con.Open();

        string SqlStr = "select * from 工资表";

        SqlDataAdapter ada = new SqlDataAdapter(SqlStr, con);

        DataSet ds = new DataSet();

        ada.Fill(ds);

        GridView1.DataSource = ds;

        GridView1.DataBind();

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        SqlConnection con = new SqlConnection("server=(local);user id=sa;pwd=sa;Database=db_09");

        con.Open();

        string SqlStr = "select * from 工资表 order by 所属部门 compute sum(工资)   ";

        SqlDataAdapter ada = new SqlDataAdapter(SqlStr, con);

        DataSet ds = new DataSet();

        ada.Fill(ds);

        GridView2.DataSource = ds.Tables[1].DefaultView;

        GridView2.DataBind();

}

 

运行界面如下:

 

(3) 使用Computeby.子句

 

在对数据进行查询时,有时需要既能显示分组情况,又能将各组数据统计结果显示出来,利用Compute by语句可以轻松实现按组显示和统计数据.

 

 

select * from 工资表 order by 所属部门 compute sum(工资) by  所属部门

注意:by关键字后的条件必须相同。上面都为所属部门

每个组的第一个结果集是明细记录,每个组的第二个结果集只包含一条记录。

 

 

 

ASP.NET中的应用:

        SqlConnection con = new SqlConnection("server=(local);user id=sa;pwd=sa;Database=db_09");

        con.Open();

        string SqlStr = "select * from 工资表 order by 所属部门 compute sum(工资) by 所属部门";

        SqlDataAdapter ada = new SqlDataAdapter(SqlStr, con);

        DataSet ds = new DataSet();

        ada.Fill(ds);

        GridView1.DataSource = ds.Tables[0].DefaultView;

        GridView2.DataSource = ds.Tables[1].DefaultView;

        GridView3.DataSource = ds.Tables[2].DefaultView;

        GridView4.DataSource = ds.Tables[3].DefaultView;

        GridView5.DataSource = ds.Tables[4].DefaultView;

        GridView6.DataSource = ds.Tables[5].DefaultView;

        GridView1.DataBind();

        GridView2.DataBind();

        GridView3.DataBind();

        GridView4.DataBind();

        GridView5.DataBind();

        GridView6.DataBind();

界面如下:

 

 

 

 

 

 

你可能感兴趣的:(sql Compute by语句用法)