sql Compute by语句用法

原创 2008年09月28日 10:45:00

       在对数据进行统计分析时,如果既需要保存查询结果,又能在查询结果下面将统计结果显示出来,就非常直观了。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

      

 

       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生成单个结果集,每个组都有一个只包含分组依据和显示该组子聚合的聚合函数的行。

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

 

(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 统计分组 Group By和Compute By的整理

SQL 数据统计方面常用到的数据分组,Gruop By和Compute By之间的使用和区别,以及Having和Where条件字句之间的区别!...
  • CrazyMo_
  • CrazyMo_
  • 2015年03月15日 16:07
  • 3034

T-SQL 高级应用之数据汇总(聚合函数之2 group by) .

1、概述2、原始表3、简单Group By4、Group By 和 Order By5、Group By中Select指定的字段限制6、Group By All7、Group By与聚合函数8、Hav...
  • u010236550
  • u010236550
  • 2013年10月28日 22:57
  • 1795

sql的having深入理解;group by只返回一组的一行,compute更好

Having where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。 having 子句的作用...
  • longshenlmj
  • longshenlmj
  • 2014年01月02日 14:46
  • 3314

SQL compute by 的使用

GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出...
  • caomiao2006
  • caomiao2006
  • 2016年08月07日 05:30
  • 311

SQL Compute By 的使用 和 与Group By 的区别

GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出...
  • u010706189
  • u010706189
  • 2015年12月31日 14:03
  • 1100

SQL语句select用法详解

  • 2014年07月21日 10:56
  • 18KB
  • 下载

SQL中Case语句用法讨论_BJ

  • 2011年09月19日 10:32
  • 4KB
  • 下载

各种sql语句的详细用法与讲解.pdf

  • 2009年09月01日 00:59
  • 449KB
  • 下载

MySQL Order by 语句用法与优化详解

Order by语句是用来排序的,经常我们会使用到Order by来进行排序,下面我给大家来讲讲Order by用法与优化排序,有需要的同学可参考 MySQL Order By keywor...
  • sanbingyutuoniao123
  • sanbingyutuoniao123
  • 2016年06月12日 19:25
  • 184

MySQL Order by 语句用法与优化详解

Order by语句是用来排序的,经常我们会使用到Order by来进行排序,下面我给大家来讲讲Order by用法与优化排序,有需要的同学可参考 MySQL Order By keywo...
  • agonie201218
  • agonie201218
  • 2016年12月29日 17:38
  • 209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql Compute by语句用法
举报原因:
原因补充:

(最多只允许输入30个字)