首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MYSQL计算市场份额

用MYSQL计算市场份额
EN

Stack Overflow用户
提问于 2014-07-03 18:58:16
回答 3查看 2.2K关注 0票数 0

我有一个数据库,记录了每一次商店的销售情况。我可以查询每一家商店的总销售额:

代码语言:javascript
复制
Select SellerName, Count(*) as Sales From salesData Group By SellerName...

如何创建一个查询来显示每个SellerName的市场份额?

即销售数量/销售总额

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-03 19:39:03

回答并作出一些改进:

  • 无需将ZIP代码放在SQL中两次,只需将其作为内部和外部查询之间的一个条件即可。(见下文)
  • 当然,希望您将BuyerZipCode存储为VARCHAR,而不是INTEGER。因此,引用您的ZIP,例如:'90210'而不是90210
  • 除非您必须避免SQL查询中的数字格式设置(乘以100、舍入、concat %)。不管你的前端是什么(PHP,Excel,Crystal Reports),格式化都会做得很好。-这是个人偏好,有些人会争论。
  • 为了可读性而缩进。--同样是个人的事情;不影响查询的执行,但有助于调试,并鼓励其他人帮助您检查代码。

代码:

代码语言:javascript
复制
SELECT SellerName
      , count(*) ytd
      , count(*)/(SELECT count(*)
                  FROM onlineData
                  WHERE BuyerZipCode = o.BuyerZipCode) share
  FROM onlineData o
  WHERE BuyerZipCode = '90210'
  GROUP BY SellerName, BuyerZipCode
  Order BY ytd DESC
  LIMIT 0, 700 ;

编辑:刚刚修改了GROUP BY SellerName -> GROUP BY SellerName, BuyerZipCode。当您查找一个邮政编码(例如90210 )时,它不会伤害或更改结果,但是如果您想要多个区域( WHERE BuyerZipCode IN ('90210', '90211', '90212') ),那么这很重要。对于每个邮政编码的市场份额计算,只需完全删除WHERE条款即可。

票数 2
EN

Stack Overflow用户

发布于 2014-07-03 19:08:35

首先你会发现总销售额

代码语言:javascript
复制
Select sum(salesAmount) as totalSalesAmount From salesData

然后用这个金额来计算每个销售人员的百分比

代码语言:javascript
复制
Select SellerName, sum(salesAmount)/totalSalesAmount as Sales From salesData Group By SellerName...

如果您想要它的花哨,您可以在一个查询中使用相同的表并用不同的名称投影它。

票数 0
EN

Stack Overflow用户

发布于 2014-07-03 19:47:45

代码语言:javascript
复制
SELECT SellerName, Count(*) as Sales, (Count(*)/(SELECT Count(*) FROM salesData))*100 as salesPerCent
From salesData Group By SellerName
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24561386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档