提问人:Volodymyr 提问时间:5/19/2019 最后编辑:TotoVolodymyr 更新时间:8/18/2021 访问量:817
Mysql 查询 - 按国家、地区汇总总计,并占总计的百分比(常规)
Mysql query - summ total by country, region and take percentage of total (general)
问:
我有两张桌子 1. 地理 2. 销售
带字段的地理位置 国家/地区、城市、userId
带字段的销售额 UserId、sales_amount
我需要进行查询并有 fileds 的结果 国家 / 城市 / sales_amount (按城市) / 占总数的百分比(一般) 按城市
我怎样才能在没有加入销售表的情况下制作它? 你能帮我查询吗?
我只知道将销售加入到自己身上(但它不起作用)
我试图将 join Sales 本身化,但它不起作用
Select Geo.country, Geo.city, sum(Sales_amount),
(sum(Sales_amount))/"t" as "percentage of general total"
From Geo
Join
Sales
On Geo.UserId = Sales.UserId
Join
(Select userId, summ(sales_amount) as "total" from Sales) as "t"
ON t.userId = Geo.UserId
Group by Geo.country, Geo.city
结果什么都没有(
答:
0赞
forpas
5/19/2019
#1
表之间的连接,然后按城市求和。
百分比可以通过将每个总和除以总和来检索:
select
g.country,
g.city,
sum(s.sales_amount) citysales,
100.0 * sum(s.sales_amount) / (select sum(sales_amount) from sales) percentage
from geo g left join sales s
on g.userid = s.userid
group by g.country, g.city
评论
0赞
Volodymyr
5/19/2019
也许您知道查询的一些优化或其他解决它的方法?因为销售表太大了,当我运行查询时,它需要很多时间
0赞
forpas
5/19/2019
联接列的索引:geo.userid 和 sales.userid 会有所帮助(如果它们尚不存在)。此外,如果您的 Mysql 版本是 8.0,您可以使用 CTE 代替 ,尽管我相信它已经过优化,因此它只被评估一次。(select sum(sales_amount) from sales)
评论