存在 2 个分组条件时如何计算 mysql/sql 中的百分比
how to compute percentage in mysql/sql when 2 group by conditions are present
id title count organizer
1 music 4 2
2 sports 6 2
3 music 2 3
我有一个具有上述结构的派生 table。我需要计算每个标题的每个组织者的事件数百分比。即我期待这样的结果:
organizer title percentage
2 music 40%
2 sports 60%
3 music 100%
我在没有考虑组织者的情况下这样做的方式产生了轻松聚合所有值的百分比,但引入组织者把它搞砸了。有人可以帮我吗??
您可以在下面尝试 - 使用标量子查询
select organizer,title,count*100/(select sum(count) from tablename b where a.organizer=b.organizer)
from tablename a
输出:
organizer title percentage
2 music 40.0000
2 sports 60.0000
3 music 100.0000
将派生的 table 作为实际数据(可能不是最优的)您可以:
select to.organizer, to.title, 100.0*to.count/o.count as percentage
from
(select organizer, sum(count) as count from derivedtable group by organizer) o
inner join
derivedtable to
on
to.organizer = o.organizer
它的工作原理是将每个组织者的数据相加得到总数,然后将其与您拥有的数据结合起来,这样您就可以将特定的活动组织者计数除以该组织者的总计数
可能有一种更简单的方法来处理您的源数据,因为您必须插入创建派生 table 的查询,这可能会使它变得混乱。作为 CTE 可能是最简单的做法,但是下次您提问时一定要尝试包括原始源数据和 "query so far",否则我们必须在一些我们一无所知的解决方案之上构建解决方案,结果可能不会最佳
id title count organizer
1 music 4 2
2 sports 6 2
3 music 2 3
我有一个具有上述结构的派生 table。我需要计算每个标题的每个组织者的事件数百分比。即我期待这样的结果:
organizer title percentage
2 music 40%
2 sports 60%
3 music 100%
我在没有考虑组织者的情况下这样做的方式产生了轻松聚合所有值的百分比,但引入组织者把它搞砸了。有人可以帮我吗??
您可以在下面尝试 - 使用标量子查询
select organizer,title,count*100/(select sum(count) from tablename b where a.organizer=b.organizer)
from tablename a
输出:
organizer title percentage
2 music 40.0000
2 sports 60.0000
3 music 100.0000
将派生的 table 作为实际数据(可能不是最优的)您可以:
select to.organizer, to.title, 100.0*to.count/o.count as percentage
from
(select organizer, sum(count) as count from derivedtable group by organizer) o
inner join
derivedtable to
on
to.organizer = o.organizer
它的工作原理是将每个组织者的数据相加得到总数,然后将其与您拥有的数据结合起来,这样您就可以将特定的活动组织者计数除以该组织者的总计数
可能有一种更简单的方法来处理您的源数据,因为您必须插入创建派生 table 的查询,这可能会使它变得混乱。作为 CTE 可能是最简单的做法,但是下次您提问时一定要尝试包括原始源数据和 "query so far",否则我们必须在一些我们一无所知的解决方案之上构建解决方案,结果可能不会最佳