У меня есть запрос SQL, который производит следующую таблицу, но я хочу, чтобы иметь возможность получить общее для отмеченных столбцов, которые сгруппированы по категориям: Можно ли вычислить общее количество столбцов в группе?
вот код:
select pic.Name as Category,
pis.Code as Code,
pis.Name as Issue,
count(it.ID) as 'total count',
sum(mc.ots) as 'Imps',
sum(case when ito.rating <50 then 1 else 0 end) as 'unfav count',
sum(case when ito.Rating =50 then 1 else 0 end) as 'neu count',
sum(case when ito.Rating >50 then 1 else 0 end) as 'fav count',
(sum(case when ito.rating < 50 then 1.0 else 0.0 end)/count(it.ID) * 100) as 'unfav %',
(sum(case when ito.Rating =50 then 1.0 else 0.0 end)/count(it.ID) * 100) as 'neu %',
(sum(case when ito.Rating >50 then 1.0 else 0.0 end)/count(it.ID) * 100) as 'fav %',
CONVERT(decimal(4,2),avg(ito.Rating)) as 'Av Rating %',
count(it.id) * 100.0/sum(count(it.ID)) OVER() AS [% of Count],
sum(mc.ots) * 100.0/sum(sum(mc.ots)) OVER() AS [% Imps]
from
Profiles P
INNER JOIN ProfileResults PR ON P.ID = PR.ProfileID
INNER JOIN Items it ON PR.ItemID = It.ID
inner join Batches b on b.ID=it.BatchID
left outer join BatchActionHistory bah on b.ID=bah.batchid
inner join itemorganisations oit (nolock) on it.id=oit.itemid
inner join itemorganisations ito (nolock) on it.id=ito.itemid
inner join itemorganisationIssues ioi (nolock) on ito.id=ioi.itemorganisationid
inner join ProjectIssues pis (nolock)on ioi.IssueID = pis.ID
inner join ProjectIssueCategories pic (nolock)on pic.ID = pis.CategoryID
inner join Lookup_ItemStatus lis (nolock) on lis.ID = it.StatusID
inner join Lookup_BatchStatus lbs (nolock) on lbs.ID = b.StatusID
inner join Lookup_BatchTypes bt on bt.id = b.Typeid
inner join Lookup_MediaChannels mc on mc.id = it.MediaChannelID
where p.ID = @profileID
and b.StatusID IN (6,7)
and bah.BatchActionID = 6
and it.StatusID = 2
and it.IsRelevant = 1
Group BY pic.Name,pis.Name,pis.Code
order by pic.name
Эта сумма составляет только суммы для этой группы или всего набора результатов? – Xerxes
@xerxes в ответ, предложенный Гордоном Линнхоффем, попробуйте добавить OVER (PARTITION by pis.Code) –
спасибо, это сработало :) – Xerxes