当存在2组按条件时,如何计算mysql / sql中的百分比

时间:2019-01-30 06:40:17

标签: mysql sql database group-by aggregation

selection11Data =[];

我有一个具有上述结构的派生表。我需要为每个标题计算每个组织者的事件数量百分比。即,我期望得到这样的结果:

id title   count organizer
1  music   4     2
2  sports  6     2
3  music   2     3

我在不考虑组织者的情况下进行操作的方式产生了轻松汇总所有值的百分比,但是引入组织者却把事情搞砸了。有人可以在这里帮助我吗?

2 个答案:

答案 0 :(得分:2)

将派生表作为实际数据(可能不是最佳数据),您可以:

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

它的工作原理是将每个组织者的数据相加以获得总计,然后将其重新添加到您拥有的数据中,这样您就可以进行特定的事件组织者计数除以该组织者的总数

使用源数据可能有一种更简单的方法,因为您必须插入查询才能创建派生表,这可能会使它变得混乱。作为CTE,这可能是最简单的操作,但是下次您提出问题时,请尝试包含原始源数据和“到目前为止的查询”,否则我们必须在一些我们不了解的解决方案的基础上构建一个解决方案,而结果可能不会最佳

答案 1 :(得分:1)

您可以在下面尝试-使用标量子查询

DEMO

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