日期:2014-05-19  浏览次数:20503 次

在线等:请问这个SQL语句该怎么写?
原来有一个表,结构如下
-------------------------
城市     |     品牌   |     销售量  
-------------------------
北京     |   TCL       |         1
-------------------------
北京     |   长虹     |         2
-------------------------
北京     |   LG         |         8
-------------------------
上海     |   TCL       |         1
-------------------------
广州     |   TCL       |         1
-------------------------
广州     |   TCL       |         10

城市是不同的,品牌也是不同的,但同一个城市的品牌是不重复的(也就是说北京不会有两条TCL品牌的纪录)。我要向计算每个城市的品牌率,计算公式就是
某城市某个品牌的销售量/该城市所有品牌的销售量,比方说第一行数据就是
1/(1+2+7)=10%.我希望得到的结果如下表所示
-------------------------------------
城市     |     品牌   |     销售量   |   城市品牌率
-------------------------------------
北京     |   TCL       |         1         |           10%
------------------------------------
北京     |   长虹     |         2         |           20%
-------------------------------------
北京     |   LG         |         7         |           70%
--------------------------------------
上海     |   TCL       |         1         |           100%
-------------------------------------
广州     |   TCL       |         1         |           10%
-------------------------------------
广州     |   TCL       |         9       |             90%

麻烦那位高手帮我看看这个存储过程该怎么写?给个思路也行,多谢拉!

------解决方案--------------------
select *, 城市品牌率 = rtrim(a.销售量 * 100.0 / b.cnt) + '% '
from 表 a inner join
(select 城市, sum(销售量) as cnt from 表 group by 城市) b
on a.城市 = b.城市
------解决方案--------------------
select *,城市品牌率=cast(销售量/(select sum(销售量) from tablename where t.城市=城市) as varchar)+ '% '
from tablename
------解决方案--------------------
你的數據就有問題。。

try :
select 城市,品牌 ,销售量 ,城市品牌率= (select sum(销售量) from table group by 城市 where 城市 = a.城市) from table a
------解决方案--------------------
Select
A.城市,
A.品牌,
A.销售量,
Cast(A.销售量 * 100 / B.销售量 As Varchar) + '% '
From
表 A
Inner Join
(Select 城市, SUM(销售量) As 销售量 From 表 Group By 城市) B
On A.城市 = B.城市
------解决方案--------------------
select 城市,品牌 ,销售量 ,城市品牌率= 销售量/(select sum(销售量) from table group by 城市 where 城市 = a.城市) from table a

------解决方案--------------------
create table tab(城市 varchar(10),品牌 varchar(10),销售量 int)
insert tab
select '北京 ', 'TCL ',1