在线等:请问这个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