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();

界面如下:

 

 

 

 

 

 

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值