У нас есть инструмент, который позволяет пользователям создавать свои собственные группы. В этих группах пользователи могут писать сообщения. То, что я пытаюсь определить, - это соотношение между размером группы и общим количеством сообщений в этой группе.Множество значений для разных таблиц в одном запросе
Я могу выполнять инструкции SQL, чтобы получить список имен групп и количество пользователей в этой группе (запрос 1), а также список имен групп и количество сообщений (запрос 2), но я хотел бы, чтобы быть в том же запросе.
Query 1
select count(pg.personID) as GroupSize, g.GroupName
from Group g inner join PersonGroup pg g.GroupID = pg.GroupID
where LastViewed between @startDate and @enddate and
g.Type = 0
group by g.GroupID, g.GroupName
order by GroupSize
Query 2
select count(gp.PostID) as TotalPosts, g.GroupName
from Group g inner join GroupPost gp on g.GroupID = gp.GroupID
inner join Post p on gp.PostID = p.PostID
where g.Type = 0 and
gp.Created between @startDate and @enddate
group by g.GroupID, g.GroupName
order by TotalPosts
** Примечание: Человек может опубликовать то же самое "сообщение" для нескольких групп
я считаю, из этих данных я мог бы построить гистограмма (# групп с 10-20 пользователями, 21-30 пользователей и т. д.) и включает среднее количество сообщений для групп в этих разных ячейках.
Запросы OP используют несколько разные фильтрации: 'gp.Created между @startDate и @ enddate' во втором запросе по сравнению с первым запросом' LastViewed между @startDate и @ enddate'. Также не установлено, что 'LastViewed' является столбцом' Group'. (Да, OP, вероятно, был бы более ясен с этой стороны, но мы не должны слишком много думать, если мы.) –
Кроме этого, я согласен с вашим подходом, на самом деле. Возможно, я использовал бы реальные идентификаторы из объединенных таблиц и NULL для замены, и, следовательно, я бы вычислил COUNT вместо SUM, но в основном это было бы так же, как и ваше предложение. –