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, но постарайтесь включить исходные данные источника и "запрос пока" в следующий раз, когда вы зададите вопрос, в противном случае нам придется строить решение поверх решения, о котором мы ничего не знаем, и результат может не быть оптимальным
Вы можете попробовать ниже - используя скалярный подзапрос
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