+ -
当前位置:首页 → 问答吧 → SQL算百分比的问题

SQL算百分比的问题

时间:2011-11-26

来源:互联网

ID NAME
3 方芳芳
3 凤飞飞
15 傅芬芳

根据ID算出NAME占的百分比,结果也就是:
3 方芳芳 50.00%
3 凤飞飞 50.00% 
15 傅芬芳 100.00%

SQL code
SELECT STR(COUNT(1)*100/B.Con,5,2)+'%' AS Share
         FROM Tab AS a,(SELECT COUNT(1) AS Con FROM Tab) AS B 
            GROUP BY B.Con

我写的SQL只能算整个的百分比,不能跟ID分开。怎么写呢?

作者: qq3889163   发布时间: 2011-11-26

SQL code
select *,100./(SELECT COUNT(*) FROM tab WHERE A.ID=ID)
FROM TAB AS A

作者: liangCK   发布时间: 2011-11-26

需求不明。

作者: longai123   发布时间: 2011-11-26

SQL code
SELECT STR(COUNT(1)*100.0/B.Con,5,2)+'%' AS Share
         FROM Tab AS a inner join (SELECT ID,COUNT(1) AS Con FROM Tab group by ID) AS B  on a.ID=b.ID
            GROUP BY B.Con

以下两个位置要改改
100.0
(SELECT ID,COUNT(1) AS Con FROM Tab group by ID)

作者: roy_88   发布时间: 2011-11-26

1楼正解!!!

作者: yudiw   发布时间: 2011-11-26

SQL code

if object_id('tb','u') is not null
   drop table tb
go
create table tb
(
 id int,
 name varchar(10)
)
go
insert into tb
select 3,'方芳芳' union all
select 3,'凤飞飞' union all
select 15,'傅芬芳'
go
select id,name,百分比=cast((select count(1) from tb where id=a.id and name=a.name)*100/count(1) over(partition by id) as varchar)+'%' from tb a
/*
id          name       百分比
----------- ---------- -------------------------------
3           方芳芳        50%
3           凤飞飞        50%
15          傅芬芳        100%

(3 行受影响)

*/

作者: pengxuan   发布时间: 2011-11-26

引用 1 楼 liangck 的回复:
SQL code
select *,100./(SELECT COUNT(*) FROM tab WHERE A.ID=ID)
FROM TAB AS A

正解~~

作者: Lastone_Key   发布时间: 2011-11-26

引用 5 楼 pengxuan 的回复:
SQL code

if object_id('tb','u') is not null
drop table tb
go
create table tb
(
id int,
name varchar(10)
)
go
insert into tb
select 3,'方芳芳' union all
select 3,'凤飞飞' union all
select……

作者: fredrickhu   发布时间: 2011-11-26

select *,100.0/(SELECT COUNT(*) FROM tab WHERE A.ID=ID)
FROM TAB AS A

作者: Beirut   发布时间: 2011-11-26