首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

请问sql分组查询

2012-02-24 
请教sql分组查询表1中有字段“余额”,如何按余额分成如下类别,并统计出合计额及其占百分比等,sql语句能实现

请教sql分组查询
表1中有字段“余额”,如何按余额分成如下类别,并统计出合计额及其占百分比等,sql语句能实现吗?

账户余额分类         余额合计余额占比户数合计户数占比
0元
0-0.1(含)万
0.1-1(含)万
1-10(含)万
10以上


[解决办法]
select 账户余额分类,sum(余额) as 余额合计
from
(
SELECT 1 as 序号, '0元 ' as 账户余额分类, 余额 FROM 表1 where 余额=0
union all
SELECT 2 as 序号, '0-0.1(含)万 ' as 账户余额分类, 余额 FROM 表1 where 余额> 0 and 余额 <=1000
union all
SELECT 3 as 序号, '0.1-1(含)万 ' as 账户余额分类, 余额 FROM 表1 where 余额> 1000 and 余额 <=10000
union all
SELECT 4 as 序号, '1-10(含)万 ' as 账户余额分类, 余额 FROM 表1 where 余额> 10000 and 余额 <=100000
union all
SELECT 5 as 序号, '10以上 ' as 账户余额分类, 余额 FROM 表1 where 余额> 100000
) as t
group by 账户余额分类
order by min(序号)

[解决办法]
SELECT 1 as 序号, '0元 ' as 账户余额分类, sum(余额) as 余额合计,count(*) as
户数合计,count(*)/(select count(*) from tt) as 户数占比,sum(余额)/(select sum(余额)
from tt) as 余额占比 FROM tt where 余额=0
union all
SELECT 2 as 序号, '0-0.1(含)万元 ' as 账户余额分类, sum(余额) as 余额合计,count(*) as
户数合计,count(*)/(select count(*) from tt) as 户数占比,sum(余额)/(select sum(余额)
from tt) as 余额占比 FROM tt where 余额 between 1 and 1000
union all
SELECT 3 as 序号, '0.1-1(含)万 ' as 账户余额分类, sum(余额) as 余额合计,count(*) as
户数合计,count(*)/(select count(*) from tt) as 户数占比,sum(余额)/(select sum(余额)
from tt) as 余额占比 FROM tt where 余额 between 1001 and 10000
union all
SELECT 4 as 序号, '1-10(含)万 ' as 账户余额分类, sum(余额) as 余额合计,count(*) as
户数合计,count(*)/(select count(*) from tt) as 户数占比,sum(余额)/(select sum(余额)
from tt) as 余额占比 FROM tt where 余额 between 10001 and 100000
union all
SELECT 5 as 序号, '10万以上 ' as 账户余额分类, sum(余额) as 余额合计,count(*) as
户数合计,count(*)/(select count(*) from tt) as 户数占比,sum(余额)/(select sum(余额)
from tt) as 余额占比 FROM tt where 余额> 100001
order by 序号

热点排行