【发布时间】:2015-06-15 08:38:04
【问题描述】:
假设我有一个名为 sales 的表,其中包含 itemid、storeid、sale 和 date 列
然后我有一个名为 storeregion 的表,其中包含 storeid 和 region 列。如果我想获得特定日期范围内某个地区的销售额:
select region, sum(sale)
from sales s
inner join storeregion sr on s.storeid=sr.storeid
where date between 'whatever' and 'whatever'
group by region
所以我得到这样的结果:
东|500
西|400
好的,很酷。现在,我还有一个名为 itemcategory 的表,其中包含 itemid 和 category 列。我想看看每个区域每个类别的销售额。我可以做这样的事情。
select sr.region, ic.category, sum(sale)
from sales s
inner join storeregion sr on s.storeid=sr.storeid
inner join itemcategory ic on s.itemid=ic.itemid
where date between 'whatever' and 'whatever'
group by sr.region
group by ic.category
所以我得到这样的结果:
东方|玩具|100
东方|书籍|200
东部|奥运会|200
西部|玩具|300
西部|游戏|100
现在我真正想做的是找到一个地区的一个类别的销售额占该地区总销售额的 50% 以上的地方。因此,根据我在第一个查询中的示例,我得到了结果:
西|400
在第二个查询中我得到了结果:
西部|玩具|300
占该地区总销售额的 50% 以上。
我想写一个只给我结果的查询
西部|玩具|300
因为它占该地区销售额的 50% 以上。有什么想法吗?
【问题讨论】:
-
首先,您应该选择您正在使用的数据库,并适当地标记问题:MySQL 还是 SQL Server?
-
对不起,SQL Server。固定。
标签: sql sql-server