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


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

organizer  title   percentage
2          music   40%
2          sports  60%
3          music   100%


我在不考虑组织者的情况下进行此操作的方式会很容易地产生百分比,将所有值汇总在一起,但是引入组织者会使所有事情搞砸了。有人能帮我一下吗??

最佳答案

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

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,这可能是最简单的操作,但是下次您提出问题时,请尝试包含原始源数据和“到目前为止的查询”,否则我们必须在一些我们不了解的解决方案的基础上构建一个解决方案,而结果可能不会最优

10-07 15:59