sql Compute by语句用法
2008-09-28 10:45
901 查看
在对数据进行统计分析时,如果既需要保存查询结果,又能在查询结果下面将统计结果显示出来,就非常直观了。
Compute子句用于生成合计,并将其作为附加的汇总列出现在结果集的最后,当与by一起使用时,Compute子句在结果集内生成控件中断和分类汇总。可在同一查询内指定Compute by和Compute。
其语法格式如下:
[Compute[/b]
{[/b]
{Avg | count | max | min | stdev | stdevp| var | varp | sum (expression)}[,…n][/b]
[by expressin [,….]][/b]
}][/b]
[/b]
Compute子句中使用的聚合函数
[/b]
注意:聚合函数不能使用字段别名。[/b][/b]
[/b]
Group by和Compute都可以汇总数据,但在结果集上还是存在区别的。
测试数据[/b][/b]
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) [/b]select [/b]所属部门[/b],[/b]部门工资合计[/b]=sum([/b]工资[/b]) from [/b]工资表[/b] group by [/b]所属部门[/b][/b]
Group by生成单个结果集,每个组都有一个只包含分组依据和显示该组子聚合的聚合函数的行。
[/b]
(2) select * from [/b]工资表[/b] order by [/b]所属部门[/b] compute sum([/b]工资[/b])[/b]
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) [/b]使用Compute[/b]…[/b]by[/b]…[/b].[/b]子句[/b]
在对数据进行查询时,有时需要既能显示分组情况,又能将各组数据统计结果显示出来,利用Compute by语句可以轻松实现按组显示和统计数据.
select * from [/b]工资表 order by 所属部门 compute sum(工资) by 所属部门[/b]
注意:by关键字后的条件必须相同。上面都为所属部门[/b]
每个组的第一个结果集是明细记录,每个组的第二个结果集只包含一条记录。
在[/b]ASP.NET[/b]中的应用[/b]:[/b]
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();
界面如下:
Compute子句用于生成合计,并将其作为附加的汇总列出现在结果集的最后,当与by一起使用时,Compute子句在结果集内生成控件中断和分类汇总。可在同一查询内指定Compute by和Compute。
其语法格式如下:
[Compute[/b]
{[/b]
{Avg | count | max | min | stdev | stdevp| var | varp | sum (expression)}[,…n][/b]
[by expressin [,….]][/b]
}][/b]
[/b]
Compute子句中使用的聚合函数
行聚合函数 | 结果 |
Avg | 数字表达式中所有值的平均值 |
Count | 选定的行数 |
Max | 最大值 |
Min | 最小值 |
Stdev | 统计值的标准偏差 |
Stdevp | 填充统计的标准偏差 |
Sum | 求和 |
Var | 统计方差 |
Varp | 填充统计方差 |
注意:聚合函数不能使用字段别名。[/b][/b]
[/b]
Group by和Compute都可以汇总数据,但在结果集上还是存在区别的。
测试数据[/b][/b]
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) [/b]select [/b]所属部门[/b],[/b]部门工资合计[/b]=sum([/b]工资[/b]) from [/b]工资表[/b] group by [/b]所属部门[/b][/b]
Group by生成单个结果集,每个组都有一个只包含分组依据和显示该组子聚合的聚合函数的行。
[/b]
(2) select * from [/b]工资表[/b] order by [/b]所属部门[/b] compute sum([/b]工资[/b])[/b]
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) [/b]使用Compute[/b]…[/b]by[/b]…[/b].[/b]子句[/b]
在对数据进行查询时,有时需要既能显示分组情况,又能将各组数据统计结果显示出来,利用Compute by语句可以轻松实现按组显示和统计数据.
select * from [/b]工资表 order by 所属部门 compute sum(工资) by 所属部门[/b]
注意:by关键字后的条件必须相同。上面都为所属部门[/b]
每个组的第一个结果集是明细记录,每个组的第二个结果集只包含一条记录。
在[/b]ASP.NET[/b]中的应用[/b]:[/b]
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 server compute by 子句用法实例
- oracle中 sql语句:start with .. connect by prior.. 用法
- oracle中 sql语句:start with .. connect by prior.. 用法
- sql语句之exists/not exists用法详解
- oralce sql语句用法小记
- sql语句 IF函数的用法
- 探究SQL中Case语句用法
- sql语句中as的用法
- sql语句like的用法
- mysql sql语句的用法
- 用 SQL 语句还原数据库(with move 选项用法)
- LINQ体验(7)——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains
- 【MYSQL】基础SQL语句总结(三)筛选记录基本用法
- C#调用SQL语句时乘号的用法
- 关于SQL的over partition by 开窗语句在分页和统计中的使用总
- sql语句中like的用法
- Sql group by 用法
- SQL语句Union的用法
- mysql中在sql语句里replace的用法
- sql语句Group By用法-转载