SQL查询连接实例(二)
2008-03-22 17:44
288 查看
create table inventory
(
item varchar(10),
color varchar(10),
quantity int--库存表
)
insert into inventory select 'table','blue',124
union select 'table','red',223
union select 'table','red',211
union select 'chair','blue',101
union select 'chair','red',210
/*group by,order by*/
select item,color,sum(quantity) as qu from inventory group by item,color order by item desc
--只有item和color相同的行才能分在一个组中
/*with CUBE*/
select item,color,sum(quantity) as qu from inventory group by item,color with CUBE order by item desc
--CUBE 运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。
--扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。
--CUBE 运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。
--GROUP BY 应指定维度列和关键字 WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。
/*with ROLLUP*/
select item,color,sum(quantity) as qu from inventory group by item,color with ROLLUP order by item desc
--CUBE和ROLLUP的区别在于:
--CUBE生成的结果集显示了所选列中值的所有组合的聚合
--ROLLUP生成的结果集显示了所选列中值的某一层次的聚合
--ROLLUP层次结构列语句中列的顺序由select中的列名列表顺序决定
/*计算列*/
create table emp
(
eid int primary key,
joinyear int,--工龄
sal money,--年薪
allsal as sal*joinyear --总收入=工龄×年薪
)
--不需要给计算列提供值
insert into emp(eid,joinyear,sal) values (1,5,10000)
select * from emp
/*COMPUTE*/
select item,color,quantity from inventory order by quantity COMPUTE sum(quantity),count(item)
--此语句有两个结果集是包含选择列表信息的所有明细行
--第二个结果集只有一行,其中包含COMPUTE子句中指定的聚合函数的合计
--多个聚合函数由逗号分割
--COMPUTE语句中order by子句为可选
/*COMPUTE by*/
select item,color,quantity from inventory order by item COMPUTE sum(quantity) by item
--当COMPUTE带有可选的BY子句时,符合select条件的每个组都有两个结果集
--每个组的第一个结果集是明细行集,其中包含该组的选择列表信息
--每个组的第二个结果集有一行,包含该组的COMPUTE子句中所指定的聚合函数小计
--必须先排序,后计算
--依据列表与排序依据列表匹配
--order by子句必选
(
item varchar(10),
color varchar(10),
quantity int--库存表
)
insert into inventory select 'table','blue',124
union select 'table','red',223
union select 'table','red',211
union select 'chair','blue',101
union select 'chair','red',210
/*group by,order by*/
select item,color,sum(quantity) as qu from inventory group by item,color order by item desc
--只有item和color相同的行才能分在一个组中
/*with CUBE*/
select item,color,sum(quantity) as qu from inventory group by item,color with CUBE order by item desc
--CUBE 运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。
--扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。
--CUBE 运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。
--GROUP BY 应指定维度列和关键字 WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。
/*with ROLLUP*/
select item,color,sum(quantity) as qu from inventory group by item,color with ROLLUP order by item desc
--CUBE和ROLLUP的区别在于:
--CUBE生成的结果集显示了所选列中值的所有组合的聚合
--ROLLUP生成的结果集显示了所选列中值的某一层次的聚合
--ROLLUP层次结构列语句中列的顺序由select中的列名列表顺序决定
/*计算列*/
create table emp
(
eid int primary key,
joinyear int,--工龄
sal money,--年薪
allsal as sal*joinyear --总收入=工龄×年薪
)
--不需要给计算列提供值
insert into emp(eid,joinyear,sal) values (1,5,10000)
select * from emp
/*COMPUTE*/
select item,color,quantity from inventory order by quantity COMPUTE sum(quantity),count(item)
--此语句有两个结果集是包含选择列表信息的所有明细行
--第二个结果集只有一行,其中包含COMPUTE子句中指定的聚合函数的合计
--多个聚合函数由逗号分割
--COMPUTE语句中order by子句为可选
/*COMPUTE by*/
select item,color,quantity from inventory order by item COMPUTE sum(quantity) by item
--当COMPUTE带有可选的BY子句时,符合select条件的每个组都有两个结果集
--每个组的第一个结果集是明细行集,其中包含该组的选择列表信息
--每个组的第二个结果集有一行,包含该组的COMPUTE子句中所指定的聚合函数小计
--必须先排序,后计算
--依据列表与排序依据列表匹配
--order by子句必选
相关文章推荐
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- [SQL]SQL Server SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- [转]SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- SQL多表连接查询(详细实例)
- <转自别人的文章>SQL多表连接查询(详细实例)
- 数据库基础--SQL多表连接查询(详细实例)