在线等:请问这个SQL语句该怎么写?

sunhp 2007-08-02 03:38:35
原来有一个表,结构如下
-------------------------
城市 | 品牌 | 销售量
-------------------------
北京 | 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%

麻烦那位高手帮我看看这个存储过程该怎么写?给个思路也行,多谢拉!
...全文
133 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunhp 2007-08-02
  • 打赏
  • 举报
回复
多谢各位,结帖!
leo_lesley 2007-08-02
  • 打赏
  • 举报
回复
create table tab(城市 varchar(10),品牌 varchar(10),销售量 int)
insert tab
select '北京','TCL',1
union select '北京','长虹',2
union select '北京','LG',7
union select '上海','TCL',1
union select '广州','TCL',1
union select '广州','TCL',9


select *,城市品牌率=cast(销售量*100/(select sum(销售量) from tab where t.城市=城市) as varchar)+'%'
from tab t


drop table tab
paoluo 2007-08-02
  • 打赏
  • 举报
回复
哦,上面已經有了用關聯的寫法了。

用關聯的寫法更好些。
xmlquit 2007-08-02
  • 打赏
  • 举报
回复
select 城市,品牌 ,销售量 ,城市品牌率= 销售量/(select sum(销售量) from table group by 城市 where 城市 = a.城市) from table a
paoluo 2007-08-02
  • 打赏
  • 举报
回复
Select
A.城市,
A.品牌,
A.销售量,
Cast(A.销售量 * 100 / B.销售量 As Varchar) + '%'
From
表 A
Inner Join
(Select 城市, SUM(销售量) As 销售量 From 表 Group By 城市) B
On A.城市 = B.城市
xmlquit 2007-08-02
  • 打赏
  • 举报
回复
你的數據就有問題。。

try :
select 城市,品牌 ,销售量 ,城市品牌率= (select sum(销售量) from table group by 城市 where 城市 = a.城市) from table a
leo_lesley 2007-08-02
  • 打赏
  • 举报
回复
select *,城市品牌率=cast(销售量/(select sum(销售量) from tablename where t.城市=城市) as varchar)+'%'
from tablename
echiynn 2007-08-02
  • 打赏
  • 举报
回复
select *, 城市品牌率 = rtrim(a.销售量 * 100.0 / b.cnt) + '%'
from 表 a inner join
(select 城市, sum(销售量) as cnt from 表 group by 城市) b
on a.城市 = b.城市

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧